在max(dictionary,key = dictionary.get)中,key = dictionary.get在做什么?

时间:2019-02-21 00:01:13

标签: python dictionary

我简直无法绕过key = dictionary.get为了产生结果所做的事情。

以这个简单的字典为例:

dictionary = {'a':1, 'b':2, 'c':3}

例如,我知道dictionary.get('c')将返回3。但是,使用不带任何参数的dictionary.get,仅返回“ dict对象的内置方法get”。为什么在max(dictionary,key = dictionary.get)中使用此方法时返回的结果有所不同?

dictionary = {'a':1, 'b':2, 'c':3}
print(max(dictionary, key=dictionary.get)) # 'c'

我已经阅读了文档,但听不懂...谢谢。

1 个答案:

答案 0 :(得分:1)

max()函数用于从迭代器中找到最大项。在您的情况下,可迭代值为dictionary,这意味着字典中的 keys (如您在

中看到的那样)
for k in dictionary:
    print(k)

max()也可以采用可选的key可调用参数,其中,最大值由可调用函数的返回值确定。在您的情况下,如果我们从迭代器中找到k,则可以通过dictionary.get(k)确定最大值。

如果用程序代码编写,则为:

max_output = None
max_value = ? # some correct initial value
for k in dictionary:
   if dictionary.get(k) > max_value:
       max_value = dictionary.get(k)
       max_output = k
return max_output

因此,您的一行意味着从dictionary中找到最大密钥,该最大密钥由其中的值定义。