for循环通过dict找到最大值

时间:2013-02-15 03:20:59

标签: python dictionary for-loop 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]不是最大值。

4 个答案:

答案 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)