只是彙整list of list
,並在其上使用collections.Counter
。然後用Counter.most_common()
方法與他們發生從最高到最低的數量來獲得元素tuple
的list
: -
>>> lst = [['1','2','3','4'],['1','1','1','1'],['1','2','3','4']]
>>> flattened_list = [elem for sublist in lst for elem in sublist]
>>> flattened_list
['1', '2', '3', '4', '1', '1', '1', '1', '1', '2', '3', '4']
>>>
>>> from collections import Counter
>>>
>>> counter = Counter(flattened_list)
>>> counter.most_common()
[('1', 6), ('3', 2), ('2', 2), ('4', 2)]
>>>
>>> counter.most_common(1)
('1', 6)
或者,你可以用你的方法從flatten
列表獲得最常見的元素。
>>> max(set(flattened_list), key=flattened_list.count)
'1'
您也可以扁平化您的列表如下: -
>>> sum(lst, [])
['1', '2', '3', '4', '1', '1', '1', '1', '1', '2', '3', '4']
所以,作爲一個班輪,你可以做這樣的: -
>>> lst = [['1','2','3','4'],['1','1','1','1'],['1','2','3','4']]
>>> max(set(sum(lst, [])), key=sum(lst, []).count)
'1'
當然,最後一個創建兩個具有相同內容的列表。
這將是你的預期輸出:''[[1 '','2','3','4'],['1','1','2','2'],['2','2','3','4'] ]'? –
你是什麼意思的「幫手功能」?你的定義似乎包括'Counter',但不包括'max'和'set'。你應該比使用標準庫更好地考慮避免O(N^2)行爲(就像你的'max(set(lst),key = list.count)')。 –