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

如何在不使用外部库的情况下求解数字列表的众数?

不依赖外部库求解数字列表的众数

你可以基于你写的代码逻辑完善,实现不依赖任何外部库的众数求解,下面是修正后的完整实现,同时处理了存在多个众数的场景:

def find_mode(num_list):
    count_dict = {}
    for num in num_list:
        count_dict.setdefault(num, 0)
        count_dict[num] += 1
    # 获取最高出现频次
    max_count = max(count_dict.values())
    # 收集所有达到最高频次的数字
    modes = [num for num, count in count_dict.items() if count == max_count]
    # 根据众数数量返回对应结果
    return modes[0] if len(modes) == 1 else modes

代码逐行解释

  • 避免使用Python内置关键字list作为参数名,改用num_list;字典命名为count_dict,更贴合“计数统计”的语义,提升可读性。
  • 遍历列表中的每个数字:
    • count_dict.setdefault(num, 0):检查当前数字是否在字典中,不存在则初始化计数为0,存在则不做操作,确保后续计数不会报错。
    • count_dict[num] += 1:将当前数字的计数加1,完成频次统计。
  • max_count = max(count_dict.values()):提取字典中所有计数的最大值,确定众数的判定标准。
  • 列表推导式[num for num, count in count_dict.items() if count == max_count]:遍历字典的键值对,把所有出现次数等于最高频次的数字收集起来,解决了多个众数共存的问题(比如列表[1,2,2,3,3]的众数是2和3)。
  • 最后根据众数的数量返回结果:如果只有一个众数,返回单个数值;如果有多个,返回包含所有众数的列表。

对你原代码的补充说明

你的原代码存在两个小问题:一是没有写return语句,调用函数后无法得到结果;二是仅通过max(dictionary, key=dictionary.get)只能返回第一个出现的最高频次数字,无法处理多个众数的情况。上面的修正版解决了这些问题,同时保持了无外部库依赖的要求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 15:45:42