有许多示例可以显示如何在dict中查找最大值。我很好奇为什么不能以这种方式找到最大键/值。
from random import randint
# Create dict with random keys and values.
d = {randint(1, 99): randint(1, 99) for i, j in enumerate(range(20))}
# Loop through dict to find max value
maxi = 0
for key in d:
if d[key] > maxi:
maxi = key
print(d, d[maxi])
视觉检查d,可以看出d [maxi]不是最大值。
if d[key] > maxi
正在将当前值与最大密钥进行比较。最简单的改变是写if d[key] > d[maxi]
。 (您也可以将最大值保持为自己的变量)。
您的代码的问题是,当您第一次找到大于0的值时,您存储密钥而不是值。然后将下一个值与您存储的最后一个键进行比较。
最后你存储一个不是你想要的数字(我不知道是否有一个逻辑,最终在maxi
的数字 - 我想这只是另一个随机数)。
>>> d = {"a": 5, "b": 99, "c": 3}
>>> max(d, key=d.get)
'b'
另一种方法是使用字典items()函数获取键值,并比较值以找到最大值。
max_key = None
max_val = None
for key, val in your_dict.items():
if max_val is None or val > max_val:
max_val = val
max_key = key
print(max_key, max_val)