2011-03-08 13 views

答えて

23

辞書 "a"は、Pythonの反復可能な構造体です。 for x in aでループスルーすると、辞書のキーをループします。

2番目の行では、max関数は、反復可能オブジェクト(a)とオプションの "key"関数の2つの引数をとります。 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.get(item)の値が最大となるためaitemを返すために起こっていることがわかります。すなわち、最も大きな値に対応するキー。

+0

本当に興味があるなら、ラムダ関数を使うこともできます: 'max(a、key = lambda x:a [x])' – ProdigySim

1

keyパラメータの仕組みを尋ねていますか?これは呼び出し可能で、辞書のすべての要素に適用されます。あなたの辞書の場合、それは単にこの行います

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

maxを、比較値としてキー関数の結果を使用していますので、それは明らかにすなわち3

、最高値を返す要素を選択します
関連する問題