jkm*_*acc 1 python dictionary list-comprehension
这个列表comp有效的原因是:
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)]
Run Code Online (Sandbox Code Playgroud)
但这个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
Run Code Online (Sandbox Code Playgroud)
我在找:
{0: 100, 1: 1, 2: 5, 3: 3, 4: 4}
Run Code Online (Sandbox Code Playgroud)
我以为我可以使用dict comp而不是dict(list comp).
提前致谢!
Sve*_*ach 10
你不能重复这个钥匙.字典理解具有形式
{k: v for ...}
Run Code Online (Sandbox Code Playgroud)
在哪里k和v是表达.这些表达式中的一个(或两个)可以是条件表达式,它将给出
{dpidx:d[dpidx] if dpidx in d else dpidx for dpidx in range(N)}
Run Code Online (Sandbox Code Playgroud)
但k: v它本身并不是一种表达方式.
写这个的更简单的方法是
{dpidx:d.get(dpidx, dpidx) for dpidx in range(N)}
Run Code Online (Sandbox Code Playgroud)