首页 > 解决方案 > 在嵌套列表中查找最常见的整数

问题描述

我想找到嵌套列表中最常出现的整数,并返回整数及其出现次数(以及多个整数及其在多个整数出现相同次数的情况下的出现次数)。目前数据格式如下:

list_of_lists = 
    [[11, 53],
     [2, 137],
     [2, 7, 31],
     [2, 2, 7, 31],
     [3, 3, 3, 29],
     [2, 2, 2, 3, 137],
     [2, 2, 7, 31],
     [11, 53]]

因此,所需的输出将是[[3, 3], [2, 3]],数字 3 在第五个嵌套列表中出现 3 次,而数字 2 在第六个嵌套列表中出现 3 次。

列表和列表中的列表都不是固定长度的。因此,非常感谢为可变长度解决此问题的程序!

我无法直接找到类似的问题。

谢谢!

标签: pythonlistcount

解决方案


如果你有兴趣使用纯 Python 来做,那么有以下方法:

list_of_lists = [[11, 53],[2, 137],[2, 7, 31],[2, 2, 7, 31],[3, 3, 3, 29],[2, 2, 2, 3, 137],[2, 2, 7, 31],[11, 53]]

maxOccurences = [max([[elem,sublist.count(elem),index] for elem in sublist], key=lambda i:sublist.count(i)) for index, sublist in enumerate(list_of_lists)]
maximum = max(maxOccurences, key=lambda i: i[1])
elements = [elem[:2] for elem in maxOccurences if elem[1]==maximum[1]]
print(elements)

输出:

[[3, 3], [2, 3]]

另一个建议如下:

list_of_lists = [[11, 53],[2, 137],[2, 7, 31],[2, 2, 7, 31],[3, 3, 3, 29],[2, 2, 2, 3, 137],[2, 2, 7, 31],[11, 53]]

maximum = max([max([[elem,sublist.count(elem)] for elem in sublist], key=lambda i:sublist.count(i)) for sublist in list_of_lists], key=lambda i: i[1])
elements = [[elem,sublist.count(elem)] for sublist in list_of_lists for elem in set(sublist) if sublist.count(elem)==maximum[1]]
print(elements)

输出:

[[3, 3], [2, 3]]

推荐阅读