通过字典的for循环查找最大值

0 投票
5 回答
15573 浏览
提问于 2025-04-17 15:57

有很多例子可以教你怎么在字典里找到最大的值。不过,我很好奇,为什么不能用这种方法找到最大的键/值。

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]并不是最大的值。

5 个回答

1

你代码的问题在于,当你第一次找到一个大于0的值时,你存储的是而不是这个值。接下来,你把下一个和你之前存储的进行比较。

最后,你存储的数字并不是你想要的那个(我不知道最后存入maxi的数字是否有任何逻辑可言——我猜它只是另一个随机数字)。

2

在编程中,有时候我们会遇到一些问题,比如代码运行不正常或者出现错误。这些问题可能是因为我们写的代码有bug,或者是使用的工具和库不兼容。

当你在StackOverflow上提问时,通常会有很多人来帮你解决问题。他们会根据你提供的信息,给出一些建议或者解决方案。为了让别人更好地理解你的问题,你需要描述得清楚一些,比如你遇到的具体错误信息、你使用的编程语言、以及你希望实现的功能。

记得在提问时,尽量提供相关的代码片段,这样别人才能更快地找到问题所在。代码片段可以用类似于

>>> d = {"a": 5, "b": 99, "c": 3}
>>> max(d, key=d.get)
'b'
这样的格式来标识,这样大家就知道你在说的是代码部分。

总之,提问时要清晰、具体,这样才能更容易得到帮助。

4

这段代码 if d[key] > maxi 是在比较当前的 和最大的 。最简单的改动就是把它改成 if d[key] > d[maxi]。你也可以把最大值单独存成一个变量。

撰写回答