小编典典

Python中的简单语法错误(如果不执行dict理解)

python

我有一个集合和字典,值= 5

v = s = {'a', 'b', 'c'}
d = {'b':5 //<--new value}

例如,如果字典d中的键“ b”在set s中,那么当我返回字典推导时,我希望使该值等于新值;如果set
s中的键不在字典d中,则我想使该值等于新值。所以这是我的代码,其中s [‘b’] = 5并且我的新字典是…

{'a':0, 'b':5, 'c':0}

我写了字典理解

{  k:d[k] if k in d else k:0 for k in s}
                          ^
SyntaxError: invalid syntax

为什么?!我太生气了,它不起作用。如果不是在python中,这是怎么做的?

非常抱歉 对于那些访问过此页面的人,我最初将{k:d [k],如果k in v否则k:0表示v in k},并且s [‘b’] =
5只是我创建的新词典的一种表示形式键’b’等于5,但这不是正确的习惯,您不能像这样迭代一个集合。

因此重申v和s相等。他们只是指向量和集合。


阅读 125

收藏
2021-01-16

共1个答案

小编典典

您想要实现的扩展形式是

a = {}
for k in v:
    a[k] = d[k] if k in d else 0

这里d[k] if k in d else 0在Python的版本三元运算符。看到?您需要k:从表达式的右边删除:

{k: d[k] if k in d else 0 for k in v} # ≡ {k: (d[k] if k in d else 0) for k in v}

您可以像

a = {k: d.get(k, 0) for k in d}
2021-01-16