如何计算python中字典中所有值的出现次数?TypeError:不可损坏的类型:“列表”

2024-06-25 23:15:01 发布

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

我想计算每个名字在字典中出现的次数(如下所示):

这是我的字典:

{'blue': ['Jules', 'Lucie'],
 'brown': ['Maxime'],
 'green': ['Maxime', 'Vincent', 'Lucie']}

这是我的代码:

from collections import Counter

Counter(dico.values())

我有一个错误:TypeError:unshable类型:“list”

这是我想要的结果:

Jules   1
Lucie   2
Maxime  2
Vincent 1

Tags: 代码fromimport字典countergreenblue名字
2条回答

也可以使用两个元组理解来执行此操作:

from collections import Counter
your_dict = {'blue': ['Jules', 'Lucie'],
             'brown': ['Maxime'],
             'green': ['Maxime', 'Vincent', 'Lucie']}
Counter((inner_val for val in your_dict.values() for inner_val in val))

Out:

Counter({'Jules': 1, 'Lucie': 2, 'Maxime': 2, 'Vincent': 1})

为了统计列表中出现的值,需要对列表进行链接/展平:

from itertools import chain
from collections import Counter

d = {'blue': ['Jules', 'Lucie'],
     'brown': ['Maxime'],
     'green': ['Maxime', 'Vincent', 'Lucie']}

Counter(chain(*d.values()))

chain调用将列表转换为包含所有值的单个iterable,结果是:

Counter({'Lucie': 2, 'Maxime': 2, 'Jules': 1, 'Vincent': 1})

相关问题 更多 >