2013-11-29 67 views
-2

我有一個Python列表,如果該數字高於列表的平均值,我需要查找列表中數字的最大出現次數。Python列表最大出現次數如果

我怎樣才能做到這一點?

謝謝,

約翰。

+6

計算平均,然後依次通過列表中看到什麼是比一般的大。如果你想了解更多細節,你應該發佈你迄今爲止嘗試過的/你卡住的地方。 – Alec

回答

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 
+0

提問者希望代碼的行爲方式如果最常見的值不高於數字的平均值,則會考慮下一個最常見的值等等。 – SimonT

0

下將輸出一個元組(計數,元素),其中元素比一般列表的更大:

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) 

保存平均值而不是每次計算它都是更好的選擇。

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)]