如何找到列表中出现次数最多的两个字符串?

one*_*ser 1 python arrays max python-3.x find-occurrences

我正在尝试获取数组中出现频率最高的两个元素的数量。例如,在列表['aa','bb','cc','dd','bb','bb','cc','ff']中,最频繁的应该是3('bb' 在数组中出现的次数)和第二个最频繁的2('cc' 在数组中出现的次数)。

我试过这个:

max = 0
snd_max = 0
for i in x:
 aux=x.count(i)
 if aux > max
   snd_max=max
   max=aux

print(max, snd_max)
Run Code Online (Sandbox Code Playgroud)

但我怀疑是否有更简单的方法?

Aso*_*cia 8

您可以使用collections.Counter

from collections import Counter
x = ['aa','bb','cc','dd','bb','bb','cc','ff']
counter = Counter(x)
print(counter.most_common(2))
Run Code Online (Sandbox Code Playgroud)
[('bb', 3), ('cc', 2)]