【发布时间】:2020-05-29 22:55:26
【问题描述】:
我创建了一个字典:
scores = {5: 35044.51299744237, 25: 29016.41319191076, 50: 27405.930473214907, 100: 27282.50803885739, 250: 27893.822225701646, 500: 29454.18598068598}
我可以通过以下方式使用 min 函数:
min(scores.keys(),key = lambda x: scores[x])
min(scores, key=scores.get)
但是当我尝试使用时:
min(scores.keys(),key = scores.values())
我得到一个错误:
'dict_values' 对象不可调用
谁能解释一下原因?
【问题讨论】:
-
为什么它应该起作用?
-
key 是您应用到迭代器的每个元素以确定要比较的实际值的函数。当你传递 key=scores.values() 时,你会得到 DictValues 对象(类似于列表),它不是一个函数
-
key应该是一个函数,可迭代的每个项目都传递给该函数。并且该函数应该返回一个值,通过该值可以找到min。 -
因为你是直接调用
scores.values(),它返回一个dict_values对象作为min的key函数。 Min 尝试将此dict_values称为函数。由于它没有函数(不可调用),因此引发了上述错误。
标签: python dictionary min