Python条件词典理解
此列表组件工作的原因是:Python条件词典理解,python,dictionary,list-comprehension,Python,Dictionary,List Comprehension,此列表组件工作的原因是: 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[dp
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}
我想我可以用口述作文代替口述作文
提前谢谢 您不能重复该键。词典的理解有以下形式
{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)}
不能重复该键。词典的理解有以下形式
{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)}
您需要将dpidx:dpidx更改为仅dpidx 记住d[dpidx]如果d else中的dpidx表示字典中的值,如果存在,则表示dpidx的值,否则表示dpidx的值没有意义
d={1:2,3:5}
N=5
g={dpidx: d[dpidx] if dpidx in d else dpidx for dpidx in range(N)}
print g
>>>
{0: 0, 1: 2, 2: 2, 3: 5, 4: 4}
您需要将dpidx:dpidx更改为仅dpidx 记住d[dpidx]如果d else中的dpidx表示字典中的值,如果存在,则表示dpidx的值,否则表示dpidx的值没有意义
d={1:2,3:5}
N=5
g={dpidx: d[dpidx] if dpidx in d else dpidx for dpidx in range(N)}
print g
>>>
{0: 0, 1: 2, 2: 2, 3: 5, 4: 4}
我不确定字典理解是一件事……为什么不{dpidx:d.getdpidx,dpidx for dpidx in range}?字典理解在Python 3.x和2.7中是新的。请注意,您可以通过执行dict dpidx,d[dpidx]将您的第一个列表压缩到dict中,如果dpidx在d else dpidx中,dpidx对于rangeN中的dpidx就是这样,我问:为什么添加dict comp语法?@Dan D。因为它更简洁,可以在本机代码中实现。另外,因为不需要创建惰性生成器,这将意味着管理其状态的一些开销。最后但并非最不重要的一点是,创建最基本的内置集合类型、列表和dict需要同样强大的结构。我不确定字典理解是一件事……为什么不{dpidx:d.getdpidx,dpidx for dpidx in range}?字典理解在Python 3.x和2.7中是新的。请注意,您可以通过执行dict dpidx,d[dpidx]将您的第一个列表comp生成一个dict,如果dpidx在d中,那么dpidx,dpidx对于dpidx在range中是这样的,那么我会问:为什么添加dict comp语法?@Dan d。因为它更简洁,并且可以在本机代码中实现。另外,因为不需要创建惰性生成器,这将意味着管理其状态的一些开销。最后但并非最不重要的一点是,创建最基本的内置集合类型、列表和dict的构造同样强大{dpidx:d.getdpidx,dpidx用于范围内的dpidx}