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

Python高频数字查找函数异常:同频应返回较大值却出错

问题分析与修复

原函数的错误点

  • 频率统计逻辑彻底错误:原代码第一次遇到元素时将计数设为0,仅当元素重复出现时才调用arr.count(i)设置次数。对于只出现一次的元素,计数永远是0,完全背离了统计频率的目的。
  • 未处理频率相同的场景:即使频率统计正确,原max函数仅以频率作为判断依据,当多个元素频率相同时,无法返回数值更大的那个。

修复后的实现

可以用Python内置的collections.Counter高效统计频率,同时调整max的判断规则——先按频率排序,频率相同时按元素值排序:

from collections import Counter

def highest_rank(arr):
    count = Counter(arr)
    # 优先按频率降序,频率相同则按元素值降序取最大值
    return max(count, key=lambda x: (count[x], x))

测试验证

针对测试用例[9, 48, 1, 8, 44, 45, 32],所有元素频率均为1,此时会返回数值最大的48,完全符合预期。

不依赖Counter的手动实现

如果不想使用collections模块,也可以手动完成正确的频率统计:

def highest_rank(arr):
    count_num = {}
    for num in arr:
        # 正确累加计数:存在则+1,不存在则初始化为1
        count_num[num] = count_num.get(num, 0) + 1
    # 同样以(频率, 数值)作为判断key
    return max(count_num, key=lambda x: (count_num[x], x))

内容的提问来源于stack exchange,提问作者TAHER El Mehdi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 12:33:29