我有以下两个清单
flowers = {'rose':0,'cose:0','mose:0'}
flowers
现在需要将flowers = {'rose':1,'cose:1','mose:0'}
字典更改为
states
在我循环[flowers[i] = 1 for i in states[1] if i in flowers.keys()]
我试过这个,但是一些语法似乎是个问题!
{{1}}
非常感谢帮助!我无法理解,我保持表达第一,条件在最后! :/
答案 0 :(得分:3)
您不应该对此问题使用列表解析,因为您正在修改现有列表而不是新列表。
for i in states[1]:
flowers[0][i] += 1
flowers
>>>[{'rose':1,'cose':1,'mose':0}]
如果你坚持列表理解:
new_flowers = [{i:states[1].count(i) for i in flowers[0]}]
new_flowers
>>>[{'rose': 1, 'cose': 1, 'mose': 0}]
请注意,这不会修改您原来的花卉字典,而是会修改一个新字母。
答案 1 :(得分:2)
您可以使用collections.Counter
:
import collections
counter = collections.Counter(states[-1])
new_flowers = [{a:counter.get(a, b) for a, b in i.items()} for i in flowers]
输出:
[{'rose': 1, 'cose': 1, 'mose': 0}]