我有一个集合和字典,值= 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相等。他们只是指向量和集合。
您想要实现的扩展形式是
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:从表达式的右边删除:
d[k] if k in d else 0
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}