2011-03-08 74 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