2011-03-08 38 views

回答

23

字典“a”是python中的一个可迭代结构。当您循环访问for x in a时,您正在循环查看字典中的键。

在第二行中,max函数接受两个参数:一个可迭代对象(a)和一个可选的“key”函数。 Key函数将用于评估a中物品的价值 - 其中最大的将返回。

例子:

>>> a = dict(((1,3),(0,-1),(3,21))) 
>>> for x in a: 
...  print x #output the value of each item in our iteration 
... 
0 
1 
3 

注意这里只有 “钥匙” 是输出。当我们将这些密钥中的每一个传递给“获得”时...

>>> a.get(0) 
-1 
>>> a.get(1) 
3 
>>> a.get(3) 
21 

我们得到每个密钥的值。现在看看max是如何工作的。

>>> b=[2, 3, 5, 6, 4] 
>>> max(b) 
6 
>>> def inverse(x): 
...  return 1.0/x 
... 
>>> max(b, key=inverse) 
2 

正如你所看到的,max(默认)只会在我们的迭代列表中找到最大的数字。如果我们定义“反向”函数,它将返回b中最大的项目,其中inverse(item)是最大的项目。

结合这两项,我们看到max(a, key=a.get)将返回a中的item,其中值a.get(item)是最大的。即对应于最大值的密钥。

+0

如果你真的感兴趣,你也可以尝试使用lambda函数:'max(a,key = lambda x:a [x])' – ProdigySim

1

你问的key参数是如何工作的?它需要一个可调用的,它应用于字典中的每个元素。在你的字典的情况下,它只是做到这一点:

a.get(1) # 3 
a.get(0) # -1 
a.get(3) # 21 

max然后使用功能键作为比较值的结果,因此它显然会选择返回最高值的元素,即3