嵌套 f 弦?

问题描述

所以我有一些复杂的东西,但这里有一个简单的版本:

i,j = 1,2
a_1,a_2 = 1,2
f"{a_f'{i}'} + {a_f'{j}'} = 3" == '1 + 2 = 3'

我想要像左边那样的表达式给出像右边那样的结果,我在这里写的一个错误

这可以使用嵌套的 f 字符串来完成吗?

解决方法

如果没有上下文,这似乎是一个 XY problem。您可能应该使用字典或列表而不是变量,基于 How do I create variable variables? 例如,

字典

>>> i,j = 1,2
>>> a = {1: 1,2: 2}
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'

列表

>>> i,j = 0,1  # list indexing starts at 0
>>> a = [1,2]
>>> f"{a[i]} + {a[j]} = 3"
'1 + 2 = 3'
,

您是否试图通过创建字符串来动态获取变量? 如果是这样并且它不是类属性,我头顶上唯一的解决方案是使用全局变量或本地变量(如下所示),但不推荐:

f'{globals()[f"a_{i}"]} + {globals()[f"a_{j}"]} = 3' == '1 + 2 = 3'

查看How to get the value of a variable given its name in a string?了解更多信息

,

不支持嵌套的 f 字符串。可以创建可变变量来实现相同的目的:

i,2
a_1,a_2 = 1,2
v1 = globals()[f"a_{i}"]
v2 = globals()[f"a_{j}"]
f"{v1} + {v2} = 3" == '1 + 2 = 3'

另见:How do I create variable variables?