计算Python列表中列表的出现次数

时间:2017-08-18 13:28:47

标签: python list

我的列表看起来像这样:

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) 

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

2 个答案:

答案 0 :(得分:3)

您可以使用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构建了dictlist不可用,不能用作{ {1}}秒。

答案 1 :(得分:0)

from collections import Counter

def get_most_common_x_list(origin_list, x):

    counter = Counter(tuple(item) for item in origin_list)

    for item, count in most_common_list = counter.most_common():

        if count > x:

            yield list(item), count

        else:

            break