python - Python:计算允许领带的列表中项目的最大出现次数
问题描述
现在我正在使用列表中出现的经典计数,
max(lst,key=lst.count)
但如果两个不同元素的最大出现次数相同,例如lst = [1,1,2,2]
,max
则仅返回一个元素。在我们的示例中,它将返回1
or 2
。但我需要一个同时返回1
和的函数2
。
解决方案
从列表中构建一个Counter
并使用列表推导获取与最高计数匹配的项目:
from collections import Counter
lst = [1,1,2,2]
c = Counter(lst)
maximums = [x for x in c if c[x] == c.most_common(1)[0][1]]
print(maximums)
# [1, 2]
该Counter
方法一次计算(O(n)),而该list.count
方法具有O(n ^ 2)时间复杂度,因为它每次调用都通过列表。
推荐阅读
- java - 如何解决此 NetBeans 错误:“确保项目已成功部署且服务器正在运行”?
- scala - Odersky Scala 书中的队列实现。第十九章
- mysql - MySQL如何锁定每个引擎
- google-chrome - Favicon 未显示在 Android Google Chrome 上的快速链接上
- reactjs - 使用 React Datepicker 从给定日期排除未来日期
- github-pages - GitHub 页面站点上的子页面
- android - Android如何将对象内部的对象从Activitiy传递给片段?
- oracle - 了解索引对其产生显着影响的查询的特征
- twitter-bootstrap-3 - 如何解决在缩放屏幕上隐藏/可见的 Bootstrap 3 响应问题?
- swift - tableView 不快速显示数据