我想做类似以下的事情(显然有适当的条件,而不仅仅是 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} )

为什么三元表达式不能包含字典解包?

最佳答案

试试这个语法。

a = {1:1}
a.update({2:2} if True else {1:0})
print(a)

输出:
{1: 1, 2: 2}

关于python - 字典解包在三元表达式的一个臂中不起作用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51706777/

10-11 09:32