计算列表中每个项目的出现次数

时间:2019-11-07 03:24:42

标签: python

我想计算每个项目在列表中显示多少次。这是我所拥有的:

for i in range(len(alist)):
    print(alist[i], alist.count(i))

现在出现的问题是,例如,如果列表中有7次相同的出现,则它正在打印

a 0
a 0
a 0 
a 0
a 0
a 0
a 0

而不是我想要的是

a 7

2 个答案:

答案 0 :(得分:2)

您可以使用collections.Counter

from collections import Counter

cnt = Counter(['a', 'a', 'b', 'a'])
print(cnt)  # Counter({'a': 3, 'b': 1})

由于Counter是下面的dict,因此您可以执行以下操作:

for char, count in cnt.items(): 
    print(char, count)

# a 3
# b 1

答案 1 :(得分:1)

您已将i的值声明为整数,因此您需要计算i的列表项,而不是i本身。

print(alist[i], alist.count(alist[i]))

或者,我建议:

your_list = ['A', 'B', 'A', 'C', 'A']
for item in set(list):
    print(f'{item} occurs {your_list.count(item)} number of times.')

这使您的代码更具可读性:) set(list)将返回一个集合,即列表中的所有唯一值。或者,您可以使用numpy.unique()达到相同的效果。