繁体   English   中英

遍历字典并在python List Comprehension中更新

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM