只需压平您的list of list
, 并collections.Counter
在其上使用。然后使用Counter.most_common()
方法获取其出现次数从高到低的元素:list
-tuple
>>> 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'
当然,最后一个创建了两个具有相同内容的列表。