此列表组合有效的原因是什么:
N = 5
d = {0:100, 2:5}
[(dpidx,d[dpidx]) if dpidx in d else (dpidx,dpidx) for dpidx in range(N)]
[(0, 100), (1, 1), (2, 5), (3, 3), (4, 4)]
但是这个字典补偿不起作用吗? :
{dpidx:d[dpidx] if dpidx in d else dpidx:dpidx for dpidx in range(N)}
{dpidx:d[dpidx] if dpidx in d else dpidx:dpidx for dpidx in range(N)}
^
SyntaxError: invalid syntax
我在找:
{0: 100, 1: 1, 2: 5, 3: 3, 4: 4}
我以为我可以只用dict comp代替dict(list comp)。
提前致谢!
最佳答案
您无法重复输入密钥。字典理解具有以下形式
{k: v for ...}
其中
k
和v
是表达式。这些表达式中的一个(或两个)可以是条件表达式,{dpidx:d[dpidx] if dpidx in d else dpidx for dpidx in range(N)}
但是
k: v
本身并不是一个表达式。一个更简单的方法是
{dpidx:d.get(dpidx, dpidx) for dpidx in range(N)}
关于python - Python条件字典理解,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9370246/