Table of Contents

在 Python 开发中,我们经常需要找出字典中数值最大的那个条目。本文介绍几种常用的方法来实现这一目标。

方法 1:使用内置的 max() 函数 Link to 方法 1:使用内置的 max() 函数

这是最地道(Pythonic)的方法。

PYTHON
1
2
3
4
5
6
7
8
9
10
dic = {'a': 10, 'b': 20, 'c': 15}

# 获取 value 最大的 key
key_max = max(dic, key=dic.get)

# 根据 key 获取 value
value_max = dic[key_max]

print(f'The max key is: {key_max}, the max value is: {value_max}')
# Output: The max key is: b, the max value is: 20

代码解析 Link to 代码解析

  1. max(dic, key=dic.get):

    • max() 函数默认遍历字典的(keys)。
    • key 参数指定了比较的标准。这里传入 dic.get 方法,意味着 max 函数会将每个键传入 dic.get(),并根据返回的值(即字典的 value)进行比较。
    • 最终返回的是拥有最大 value 的那个 key
  2. dic[key_max]:

    • 拿到 key 之后,再通过字典索引获取对应的 value。

方法 2:同时获取键和值(打包处理) Link to 方法 2:同时获取键和值(打包处理)

如果需要直接同时获得键和值,可以利用 items() 方法结合 lambda 表达式。

PYTHON
1
2
3
4
5
6
7
my_dict = {'a': 10, 'b': 20, 'c': 15}

# 直接获取最大值的键和值
max_key, max_value = max(my_dict.items(), key=lambda item: item[1])

print(f"最大值的键: {max_key}, 最大值: {max_value}")
# Output: 最大值的键: b, 最大值: 20

代码解析 Link to 代码解析

  1. my_dict.items(): 返回一个包含 (key, value) 元组的可迭代对象。
  2. key=lambda item: item[1]: 告诉 max 函数,比较的标准是元组的第二个元素(即 value)。
  3. 返回值: max 函数直接返回了那个最大的 (key, value) 元组,我们通过解包赋值给 max_keymax_value

注意事项 Link to 注意事项

  • 空字典会触发 ValueError,可以先判断 if not my_dict: ... 再处理
  • 多个键同值时,max 返回第一个匹配的键(插入顺序)
  • 仅需最大值时可用 max(dic.values()),但拿不到对应 key

总结 Link to 总结

  • 如果你只需要 Key,使用 方法 1 (max(dic, key=dic.get)) 最简洁。
  • 如果你需要同时获取 Key 和 Value,使用 方法 2 (max(dic.items(), key=...)) 效率更高,避免了二次查询。
Thanks for reading!

Python 获取字典中最大 Value 及其 Key 的方法

Fri Mar 28 2025
712 words · 3 minutes

© EveSunMaple | CC BY-SA 4.0