使用字典统计列表中的项

287 投票
10 回答
414108 浏览
提问于 2025-04-16 02:52

假设我有一个物品列表,比如:

['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})

撰写回答