假设我有一个项目列表,像这样:
['apple', 'red', 'apple', 'red', 'red', 'pear']
我想要一个字典,计算每个项目在列表中出现的次数。所以对于上面的列表,结果应该是:
{'apple': 2, 'red': 3, 'pear': 1}
如何在Python中简单地做到这一点?
如果只对列表中单个元素的实例计数感兴趣,请参见如何计算列表项的出现次数?。
假设我有一个项目列表,像这样:
['apple', 'red', 'apple', 'red', 'red', 'pear']
我想要一个字典,计算每个项目在列表中出现的次数。所以对于上面的列表,结果应该是:
{'apple': 2, 'red': 3, 'pear': 1}
如何在Python中简单地做到这一点?
如果只对列表中单个元素的实例计数感兴趣,请参见如何计算列表项的出现次数?。
当前回答
>>> L = ['apple','red','apple','red','red','pear']
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in L:
... d[i] += 1
>>> d
defaultdict(<type 'int'>, {'pear': 1, 'apple': 2, 'red': 3})
其他回答
简单地使用列表属性count\
i = ['apple','red','apple','red','red','pear']
d = {x:i.count(x) for x in i}
print d
输出:
{'pear': 1, 'apple': 2, 'red': 3}
>>> L = ['apple','red','apple','red','red','pear']
>>> from collections import defaultdict
>>> d = defaultdict(int)
>>> for i in L:
... d[i] += 1
>>> d
defaultdict(<type 'int'>, {'pear': 1, 'apple': 2, 'red': 3})
L = ['apple','red','apple','red','red','pear']
d = {}
[d.__setitem__(item,1+d.get(item,0)) for item in L]
print d
给出{'pear': 1, 'apple': 2, 'red': 3}
在2.7和3.1中,有特殊的Counter (dict子类)用于此目的。
>>> from collections import Counter
>>> Counter(['apple','red','apple','red','red','pear'])
Counter({'red': 3, 'apple': 2, 'pear': 1})
我喜欢:
counts = dict()
for i in items:
counts[i] = counts.get(i, 0) + 1
.get允许您在键不存在时指定一个默认值。