我有一个看起来像这样的列表:

co_list = [[387, 875, 125, 822], [397, 994, 135, 941], [397, 994, 135, 941], [397, 994, 135, 941], [397, 994, 135, 941], [1766, 696, 1504, 643]. . . ]


我需要计算相同坐标列表的数量并返回计数,在这种情况下为4。

到目前为止,我已经尝试过:

def most_common(lst):
    lst = list(lst)
    return max(set(lst), key=lst.count)

for each in kk :
    print most_common(each)


使用它,我可以在每个列表中获得最多的元素。
但我的意图是获取列表(如果出现的次数大于3)。

预期产量:

(element, count) = ([397, 994, 135, 941], 4)


任何帮助,将不胜感激。谢谢。

最佳答案

您可以将collections.Counter用于该任务:

from collections import Counter

co_list = [[387, 875, 125, 822], [397, 994, 135, 941], [397, 994, 135, 941], [397, 994, 135, 941], [397, 994, 135, 941], [1766, 696, 1504, 643]]

common_list, appearances = Counter([tuple(x) for x in co_list]).most_common(1)[0]  # Note 1
if appearances > 3:
    print((list(common_list), appearances))  # ([397, 994, 135, 941], 4)
else:
    print('No list appears more than 3 times!')


1)内部的list被转换为tuple,因为Counter构建了dict,并且不可散列的list不能用作key

10-08 03:11