用于循环dict以找到max



有很多例子可以展示如何在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]。(您也可以将最大值保留为自己的变量)。

>>> d = {"a": 5, "b": 99, "c": 3}
>>> max(d, key=d.get)
'b'

代码的问题是,第一次发现大于0的值时,存储的是而不是值。然后将下一个与您存储的上一个键进行比较。

最后,你存储了一个不是你想要的数字(我不知道maxi中的数字是否有逻辑——我想这只是另一个随机数)。

另一种选择是使用dictionaryitems()函数获取键,值,并比较这些值以找到最大

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)
for key, value in your_dict.items():
   x=max(your_dict,key=your_dict.get)
print("key with the maxi value:",x)

最新更新