Skip to main content
 首页 » 编程设计

Python条件字典理解

2025年05月04日11lhb25

此列表组合是否有效:

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)}