通过字典的for循环查找最大值
有很多例子可以教你怎么在字典里找到最大的值。不过,我很好奇,为什么不能用这种方法找到最大的键/值。
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]
。你也可以把最大值单独存成一个变量。