首页 > 解决方案 > Python:计算允许领带的列表中项目的最大出现次数

问题描述

现在我正在使用列表中出现的经典计数, max(lst,key=lst.count)但如果两个不同元素的最大出现次数相同,例如lst = [1,1,2,2]max则仅返回一个元素。在我们的示例中,它将返回1or 2。但我需要一个同时返回1和的函数2

标签: pythonlistmax

解决方案


从列表中构建一个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)时间复杂度,因为它每次调用都通过列表。


推荐阅读