2015-09-02 105 views

回答

3

把你的名單分成一個collections.Counter() object並請它替頂部結果:

from collections import Counter 

def maximum_number(lst): 
    return Counter(lst).most_common(1)[0][1] 

Counter.most_common() method返回前N個結果進行計數;上面的代碼要求提供1頂的結果,需要從返回的列表中的一個結果,而僅提取計數:

>>> from collections import Counter 
>>> lst = [4, 5, 6, 5, 2] 
>>> Counter(lst) 
Counter({5: 2, 2: 1, 4: 1, 6: 1}) 
>>> Counter(lst).most_common(1) 
[(5, 2)] 
>>> Counter(lst).most_common(1)[0] 
(5, 2) 
>>> Counter(lst).most_common(1)[0][1] 
2 
+0

我還沒有使用任何其他方式之前? –

+0

是的,還有其他的方法,但'計數器'是一種規範的解決方案,沒有理由做別的事情。只需閱讀[計數器]的文檔(https://docs.python.org/3/library/collections.html#collections.Counter)。 – Matthias

+0

@ R.I:您必須使用字典(鍵是列表中的值,值是您看到該值的次數)手動計數,然後從中獲取最大計數。由於Counter是一個字典對象,實際上,在這裏重新發明輪子沒有多大意義。 –

1

這可以幫助你..

lst = [4, 5, 6, 5, 2]  
max([lst.count(i) for i in lst]) 
+1

這是非常低效的,執行O(N^2)個步驟。 10個元素是100步,1000個步驟等等。 –

0

使用計數器如圖所示效果很好。但是,它無助於理解模式。因此,這裏是一個食譜做手工

  1. 創建一個空的字典
  2. 循環輸入//列表
  3. 找到該值,如鍵,在字典
    • ,如果它存在,增加一個
    • 其他值添加它,以1

當循環完成後,發現在字典的最高值,並使用它的關鍵

這一切都可以使用dict.get(key, 0)+1dict.iteritems()在Python有效地完成,(對於Python-2;項目(),爲Python-3)。