【发布时间】:2018-08-06 11:38:48
【问题描述】:
我想做类似以下的事情(显然是在适当的条件下,而不仅仅是 True):
a = {1:1}
print({2:2, **a if True else 1:0})
但是,它不起作用:
$ python3 test2.py
File "test2.py", line 2
print({2:2, **a if True else 1:0})
^
SyntaxError: invalid syntax
如果我将字典解包放在括号中也不起作用(我认为解包和三元表达式之间可能存在优先级问题):
$ python3 test2.py
File "test2.py", line 2
print({2:2, (**a) if True else 1:0})
^
SyntaxError: invalid syntax
最后,我不得不将解包应用到整个三元表达式,并使用临时字典作为默认值:
a = {1:1}
print({2:2, **(a if True else {1:0})})
(给出输出{2: 2, 1: 1})
为什么三元表达式不能包含字典解包?
【问题讨论】:
-
print(a if True else {1:0})? -
@Rakesh 我刚刚更新了问题以说明为什么这不起作用 - 我想向字典添加其他值。
标签: python python-3.x iterable-unpacking