2017-06-15 27 views
3

私はPython辞書のmax関数の操作を理解しようとしています。以下は私が使用しているコードです:Python辞書のmax関数の操作を理解する

tall_buildings = { 
    "Empire State": 381, "Sears Tower": 442, 
    "Burj Khalifa": 828, "Taipei 101": 509 
} 


# 1. find the height of the tallest building 
print("Height of the tallest building: ", max(tall_buildings.values())) 


# 2. find the name, height pair that is tallest 
print(max(tall_buildings.items(), key=lambda b: b[1])) 


# 3. find the tallest building 
print(max(tall_buildings, key=tall_buildings.get)) 

上記の印刷文はすべて、コードのコメントに示されている通り正しい結果を示しています。

#1#2の仕組みを理解しました。

1:tall_buildings.values()は高さのストリームを返し、max関数は高さの最大値を返します。 :tall_buildings.items()は(名前、高さ)ペアのストリームを与え、最大の機能はどのように# 3作品を理解する上で、私は難しさを持っている、しかしkey=pair's height.

に基づいてペアを返します。 key=tall_buildings.getは、最も高い建物を見つけるための鍵となりますか?私はネッドのPyconの話からコードをとっている

:#3作品がkeyとして提供方法は、単にtall_buildings辞書から値をルックアップすることであることをhttps://youtu.be/EnSu9hHGq5o?t=12m42s

+0

dict.getメソッドはキーを受け取り、関連付けられた値を返します。したがって、max関数は辞書内のすべてのエントリを実行し、ペアに最大の高さを関連付けます。 – user452570

答えて

1

max()ファンクションは、最初の引数の上でを反復し、各ファンクションにキー機能を適用し、最大のキーを持つアイテムを選択します。

辞書を反復することは、そのキーを反復することと同じです。実行時

max(tall_buildings, key=tall_buildings.get) 

tall_buildingsのすべてのキーを最初に反復処理します。各キーに対してkキーの機能tall_buildings.get(k)が評価され、kで示される建物の高さが返されます。最大高さのkが選択されて返されます。

2

方法。したがって、各keyが反復される場合、対応するvaluegetによって提供されます。 get方法が理由#3が最初の場所でキーをループさ[]オペレータ

>>> tall_buildings['Sears Tower'] 
442 
>>> tall_buildings.get('Sears Tower') 
442 

と同義である

、デフォルトでdictがループを反復することを唯一のキーである

for i in tall_buildings: 
    print(i) 

Taipei 101 
Empire State 
Burj Khalifa 
Sears Tower 

することもできます明示的にキーをループ

for i in tall_buildings.keys(): 
    print(i) 

Taipei 101 
Empire State 
Burj Khalifa 
Sears Tower 

同様に、.values()を辞書の値にするか、または.items()をループして、(key,value)のタプルをループすることができます。

+0

しかし、そこに鍵を与えているわけではありませんか? – harshil9968

+3

@ harshil9968辞書を反復することは、そのキーを反復することと同じです。 –

+0

辞書のキーであるtall_buildings.getに毎回渡されるパラメータはありますか? –

1

maxの概念は、項目の注文の定義を必要とします。

は、だからここにあなたがsortに行うのと同じようにkeyパラメータを提供している:内蔵順序の定義(例えば数値、文字列持つ値に(key, val)ペアをマッピングするために、辞書の各要素に適用する機能を)。したがって、の最大値がにマップされ、結果は元の辞書の対応する要素になります。

関連する問題