Python列出if的最大出现次数

时间:2013-11-29 02:26:27

标签: python list

我在python中有一个列表,如果数字高于列表的平均值,我需要在列表中找到一个数字的最大出现次数。

我怎样才能做到这一点?

谢谢,

约翰。

3 个答案:

答案 0 :(得分:2)

您可以像这样使用Counter

x = [1,2,4,3,2,2,4]
avg = sum(x)/len(x)
from collections import Counter
print [(num, count) for num, count in Counter(x).most_common() if num > avg]

<强>输出

[(4, 2), (3, 1)]

答案 1 :(得分:0)

使用https://stackoverflow.com/a/1520716/98191中的代码查找最常见的列表项:

foo = [1,8,8,4,5,6,7,8]

from itertools import groupby as g
def most_common_oneliner(L):
    return max(g(sorted(L)), key=lambda(x, v):(len(list(v)),-L.index(x)))[0]

top = most_common_oneliner(foo)

if top >= max(foo):
    print top

答案 2 :(得分:0)

以下将输出元素(count,element),其中元素大于列表的平均值:

x = [1,2,4,3,2,2,4]

print reduce(max, [(x.count(i), i) or i in x if i > sum(x)/len(x)])

#prints (2,4)

保存平均值而不是每次计算它是一个更好的选择。