Emm*_*coe 5 python dictionary list
所以我有一个dict,它包含对应于列表的键,其中包含str.我想收集所述列表中的所有相同值并将它们加在一起.也许我的解释令人困惑,所以我将提供一个例子:
function_name({'key1':['apple', 'orange'], 'key2':['orange', 'pear'})
>>> {'apple':1, 'orange':2, 'pear':1}
Run Code Online (Sandbox Code Playgroud)
我该如何创建这个功能?我想以某种方式制作一个像这样的for循环:
count = 0
for fruit in dict_name:
if food == 'apple'
count = count + fruit
Run Code Online (Sandbox Code Playgroud)
我仍然不确定如何格式化这个特别是如何计算值并收集它们,提前感谢任何建议!
您可以取消嵌套字典的值并应用a Counter.
>>> from collections import Counter
>>>
>>> d = {'key1':['apple', 'orange'], 'key2':['orange', 'pear']}
>>> Counter(v for sub in d.values() for v in sub)
Counter({'apple': 1, 'orange': 2, 'pear': 1})
Run Code Online (Sandbox Code Playgroud)
如果你不喜欢嵌套的生成器理解,可以使用un-nesting itertools.chain.from_iterable.
>>> from itertools import chain
>>> Counter(chain.from_iterable(d.values()))
Counter({'apple': 1, 'orange': 2, 'pear': 1})
Run Code Online (Sandbox Code Playgroud)
没有导入和传统循环,它看起来像这样:
>>> result = {}
>>> for sub in d.values():
...: for v in sub:
...: result[v] = result.get(v, 0) + 1
...:
>>> result
{'apple': 1, 'orange': 2, 'pear': 1}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
72 次 |
| 最近记录: |