我试图从字典中找到最高的三个值,并且应该返回该值的键 我遇到过这种方法
import heapq
def get_n_largest(n,dictionary):
return heapq.nlargest(n,dictionary,dictionary.get)
从python文档中,我无法理解nlargest
需要接受一个整数,一个可迭代的和一个键(如果提供)。
我不了解的是return语句中的dictionary.get()
与dictionary.get()
之间有什么区别
当我尝试打印dictionary.get
我的字典时,它会返回
“ dict对象位于0x0000020E77B12168的内置方法获取”
我进行了一些搜索,但是找不到有关它的概念。任何帮助将不胜感激!
答案 0 :(得分:1)
dictionary.get不会调用该函数,它只是对dictionary.get函数的引用。为了调用该函数,您需要执行dictionary.get(* args,** kwargs) 到目前为止-heapq.nlargest(n,dictionary,dictionary.get) 我没有看过heapq的文档。但是显然最大的可调用对象似乎是将可调用引用作为第三个参数。反过来,nlargest可能在逻辑中的某个地方调用了callable作为dictionary.get(* args,** kwargs)
答案 1 :(得分:1)
没有区别。在两种情况下,它都是完全相同的.get方法。在return语句中,它将应用于字典中的键(可迭代的元素),即。称为get(k)
。在打印中不适用,即。用字典键调用并显示get
值,该值是函数引用。