for循环通过dict找到最大值

问题描述 投票:0回答:4

有许多示例可以显示如何在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]不是最大值。

python dictionary for-loop max
4个回答
4
投票

if d[key] > maxi正在将当前值与最大密钥进行比较。最简单的改变是写if d[key] > d[maxi]。 (您也可以将最大值保持为自己的变量)。


1
投票

您的代码的问题是,当您第一次找到大于0的值时,您存储密钥而不是值。然后将下一个值与您存储的最后一个键进行比较。

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


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

0
投票

另一种方法是使用字典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)
© www.soinside.com 2019 - 2024. All rights reserved.