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]]
因此,所需的输出将是[[3, 3], [2, 3]]
,数字 3 在第五个嵌套列表中出现 3 次,而数字 2 在第六个嵌套列表中出现 3 次。
列表和列表中的列表都不是固定长度的。因此,非常感谢为可变长度解决此问题的程序!
我无法直接找到类似的问题。
谢谢!
解决方案
如果你有兴趣使用纯 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]]
推荐阅读
- javascript - 如何在Angular 8中更新除当前索引之外的对象
- java - 图形上下文、Netbeans 和“曲线”线
- powershell - Powershell脚本退出差异
- scala - Spark INFO spark.MapOutputTrackerMasterEndpoint:被要求发送 shuffle 0 的地图输出位置永远慢
- c++ - 为什么在 for 循环中更改变量后变量不改变?
- sql - 给定月份 + 上个月的 SUM 值
- git - 如何在 docker 容器中设置 git?
- mysql - 选择子表中具有特定 id 的行的总和并将其与父表进行比较
- oauth-2.0 - Keycloak 中有没有办法将访问令牌另外存储到外部数据库中?
- python - 如何对数据使用条件格式?