通过字典循环并更新python List Comprehension

时间:2018-04-15 01:13:37

标签: python list-comprehension

我有以下两个清单
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}}

非常感谢帮助!我无法理解,我保持表达第一,条件在最后! :/

2 个答案:

答案 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}]