使用字典统计列表中的项
假设我有一个物品列表,比如:
['apple', 'red', 'apple', 'red', 'red', 'pear']
我想要一个字典,用来统计每个物品在这个列表中出现的次数。所以对于上面的列表,结果应该是:
{'apple': 2, 'red': 3, 'pear': 1}
我该如何在Python中简单地做到这一点呢?
如果你只对统计列表中单个元素的出现次数感兴趣,可以查看 如何统计列表项的出现次数?。
10 个回答
75
简单地使用列表的计数属性
i = ['apple','red','apple','red','red','pear']
d = {x:i.count(x) for x in i}
print d
输出结果:
{'pear': 1, 'apple': 2, 'red': 3}
343
我喜欢:
counts = dict()
for i in items:
counts[i] = counts.get(i, 0) + 1
.get 这个方法可以让你设置一个默认值,如果你查找的键不存在的话。
394
在2.7和3.1版本中,有一个特别的工具叫做 Counter
,它是一个字典的子类,专门用来处理这个问题。
>>> from collections import Counter
>>> Counter(['apple','red','apple','red','red','pear'])
Counter({'red': 3, 'apple': 2, 'pear': 1})