You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python:如何获取列表中出现次数最多的所有元素(允许并列)

实现方案

你原来使用的max(lst, key=lst.count)仅会返回第一个匹配最高出现次数的元素,无法处理并列场景,以下提供两种可用的实现方式:

1. 无额外依赖基础实现(适合短列表)

核心逻辑是先算出全局最高出现次数,再筛选所有出现次数等于该值的元素,支持保留元素在原列表中首次出现的顺序:

def get_all_most_frequent(lst):
    max_count = max(lst.count(item) for item in lst)
    result = []
    for item in lst:
        if lst.count(item) == max_count and item not in result:
            result.append(item)
    return result

调用示例:

lst = [1,1,2,2]
print(get_all_most_frequent(lst)) # 输出 [1, 2]

注意:该实现时间复杂度为O(n²),列表长度较大时性能较差

2. 基于Counter的高效实现(推荐,适合所有场景)

使用Python标准库collections.Counter统计元素出现次数,仅需两次遍历即可得到结果,时间复杂度为O(n):

from collections import Counter

def get_all_most_frequent(lst):
    count_dict = Counter(lst)
    max_count = max(count_dict.values())
    return [item for item, count in count_dict.items() if count == max_count]

调用示例:

lst = ["a", "b", "a", "c", "b", "b", "a"]
print(get_all_most_frequent(lst)) # 输出 ['a', 'b']

Python 3.7及以上版本中,该实现返回结果会自动保留元素在原列表中首次出现的顺序


内容的提问来源于stack exchange,提问作者user13688215

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 01:36:04