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

Python字典中如何获取最大值对应的所有键?

问题分析与解决

你的代码存在几个逻辑错误,导致只能返回单个符合条件的键:

  • 缩进错误:for循环后的代码没有缩进,Python靠缩进区分代码块,这直接让循环逻辑失效。
  • 变量名冲突:函数名和内部定义的max_value变量重名,容易引发混淆。
  • 列表初始化位置错误:new_list = []放在循环内部,每次循环都会清空列表,最后只剩最后一个符合条件的键。
  • 返回时机错误:return new_list写在循环里,第一次循环就直接返回,根本不会遍历所有键。
  • 引用错误:你用了frequency[key],但函数参数是dict,应该直接用循环里的value或者dict[key],否则外部没有frequency变量时还会报错。

修正后的代码

def get_max_keys(input_dict):
    # 先获取字典中的最大值,只计算一次提升效率
    max_val = max(input_dict.values())
    # 初始化空列表用于存储结果
    max_keys = []
    # 遍历所有键值对
    for key, value in input_dict.items():
        if value == max_val:
            max_keys.append(key)
    # 遍历完成后再返回结果
    return max_keys

# 测试示例
Frequency = {9: 3, 2: 3, 6: 2, 8: 1, 1: 1}
print(get_max_keys(Frequency))  # 输出 [9, 2]

更简洁的写法(列表推导式)

如果追求代码简洁,可用一行列表推导式实现:

def get_max_keys(input_dict):
    max_val = max(input_dict.values())
    return [key for key, value in input_dict.items() if value == max_val]

这样就能正确返回所有对应最大值的键。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 07:55:20