[英]Looping through dictionary and updating in python List Comprehension
我有以下两个清单
states = ('ab',['rose','cose'])
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()]
非常感谢您的帮助! 我听不懂,我先保留表达式,最后保留条件! :/
您不应该对这个问题使用列表理解,因为您正在修改现有列表而不创建新列表。
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}]
请注意,这不会修改您最初的花朵字典,而是制作了一个新的字典。
您可以使用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}]
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.