此列表组合是否有效:
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)]
但是这个 dict comp 不起作用? :
{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)。
提前致谢!
请您参考如下方法:
您不能重复 key 。字典理解具有以下形式
{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)}
