如何在python中计算字典列表中的元素?

2024-05-05 21:27:27 发布

您现在位置:Python中文网/ 问答频道 /正文

假设我有一本这样的字典:

allName = {
          'name1': ['sainz', 'gasly'], 
          'name2': ['sainz', 'gasly', 'stroll'],
          'name3': ['sainz', 'gasly', 'stroll']
}

我怎么知道字典里有3个sainz名字,3个“gasly”名字,2个“walk”名字

我想这样打印出来:

sainz: 3
gasly: 3
stroll: 2

谢谢


Tags: 字典名字walkname1name2name3allnamegasly
3条回答

使用collections.defaultdict

Ex:

from collections import defaultdict

allName = {
          'name1': ['sainz', 'gasly'], 
          'name2': ['sainz', 'gasly', 'stroll'],
          'name3': ['sainz', 'gasly', 'stroll']
}

res = defaultdict(int)
for k, v in allName.items():
    for i in v:
        res[i]+=1
        
for k, v in res.items():
    print(f"{k}: {v}")     

输出:

sainz: 3
gasly: 3
stroll: 2

另一种简单的方法是使用集合中的计数器

>>> from collections import Counter
>>> c = Counter()
>>> for names in allName.values():
...     for name in names:
...             c[name] += 1
...
>>> c
Counter({'sainz': 3, 'gasly': 3, 'stroll': 2})
>>>

解释
循环:遍历字典并查找列表中的所有项目。
计数:然后将它们添加到计数器

最简单的方法可能是集合计数器加上itertools.chain

import itertools    
import collections
print(collections.Counter(itertools.chain(*data.values()))  

我想会有用的

相关问题 更多 >