Leo*_*eon 1 python list-comprehension python-3.x
我有一个集合和字典,值= 5
v = s = {'a', 'b', 'c'}
d = {'b':5 //<--new value}
Run Code Online (Sandbox Code Playgroud)
例如,如果字典d中的键'b'在set s中,那么我想在返回字典理解时使该值等于新值,或者如果set s中的键不在字典d中则使该值等于0.所以这是我的代码,在s ['b'] = 5并且我的新词典是...
{'a':0, 'b':5, 'c':0}
Run Code Online (Sandbox Code Playgroud)
我写了一个字典理解
{ k:d[k] if k in d else k:0 for k in s}
^
SyntaxError: invalid syntax
Run Code Online (Sandbox Code Playgroud)
为什么?!我很生气它不起作用.你是怎么做的如果在python中不是吗?
大家好抱歉.对于那些访问过这个页面的人,我最初放了{k:d [k]如果k in v else k:0 for k in v}而s ['b'] = 5只是表示我创建的新词典会有键'b'等于5,但它不正确你不能迭代这样的集合.
所以重申v和s是平等的.它们只是指向量和集合.
vau*_*tah 11
你想要实现的扩展形式是
a = {}
for k in v:
a[k] = d[k] if k in d else 0
Run Code Online (Sandbox Code Playgroud)
这里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}
Run Code Online (Sandbox Code Playgroud)
你可以简洁地写出来
a = {k: d.get(k, 0) for k in d}
Run Code Online (Sandbox Code Playgroud)