有许多示例可以显示如何在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]不是最大值。
答案 0 :(得分:4)
if d[key] > maxi
正在将当前值与最大键进行比较。最简单的改变是写if d[key] > d[maxi]
。 (您也可以将最大值保留为自己的变量)。
答案 1 :(得分:1)
您的代码存在的问题是,当您第一次找到大于0的值时,您会存储键而不是值。然后,将下一个值与您存储的最后一个键进行比较。
最后你存储了一个不是你想要的数字(我不知道是否有一个最终在maxi
的数字的逻辑 - 我想这只是另一个随机数)。
答案 2 :(得分:0)
>>> d = {"a": 5, "b": 99, "c": 3}
>>> max(d, key=d.get)
'b'
答案 3 :(得分:0)
另一种方法是使用字典项目()功能获取键,值,然后比较这些值以找到最大值。
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)