如何在 f 字符串中包含字典理解?

How to include a dict comprehension in an f-string?

有什么方法可以在 fstring 中使用字典理解吗?案例如下:

a = ['a', 'b', 'c', 'd']
list_comprehension = [v for v in a]
my_f_string = f"dict comprehension {v:None for v in a}"

我不想使用格式插值 ("{}".format(dict_comprehension))。我想使用最 pythonic 的方式将列表理解包含在 fstring 中以用于记录数据。

是的,当然有。您只需要将理解包含在括号 ( ) 中,因为两个连续的 { 被解释为文字 "{" 字符串。

a = ['a', 'b', 'c', 'd']
list_comprehension = [v for v in a]

这个有效:

my_f_string = f"dict comprehension {({v:None for v in a})}"
print(my_f_string)

Output:

dict comprehension {'a': None, 'b': None, 'c': None, 'd': None}

但是,这 起作用(Stack Overflow 的语法突出显示也有助于表明):

my_f_string = f"dict comprehension {{v:None for v in a}}"
print(my_f_string)

Output:

dict comprehension {v:None for v in a}

你想做的事情可以简单地完成

dict_comp = {v:None for v in a}
my_f_string = f"dict comprehension {dict_comp}" 

或者如果你真的想在 f 字符串中使用字典理解,那么你必须将 {v:None for v in a} 放在另一个带有 a space[=19= 的大括号内]前后{v:None for v in a}.

my_f_string = f"dict comprehension { {v:None for v in a} }"

在这种情况下我更喜欢dict.fromkeys:

my_f_string = f"dict comprehension {dict.fromkeys(a)}"

更短更优雅:)

现在:

print(my_f_string)

输出:

dict comprehension {'a': None, 'b': None, 'c': None, 'd': None}