14

python 3.6+中的f字符串中是否可以有字典或集合理解?

这在语法上似乎是不可能的:

names = ['a', 'b', 'c']
pks = [1, 2, 3]

f"{{name : pk for name, pk in zip(names, pks)}}"

这将返回:

{name : pk for name, pk in zip(names, pks)}

这是预期的行为,双括号会导致输出中的文字括号,因为不评估表达式。

有没有人找到一种解决方法来允许在 f 字符串中进行字典/集合理解?

4

1 回答 1

16

添加空格,它们在语法上是必需的,不会出现在结果字符串中:

names = ['a', 'b', 'c']
pks = [1, 2, 3]
f"{ {name: pk for name, pk in zip(names, pks)} }"
#  ▲                                          ▲
#  │                                          │ 
#  ╰───────────────See the spaces?────────────╯ 
于 2018-12-26T22:24:09.397 回答