2017-02-02 9 views
-1

私はこのようなリストがあります:Pythonで特定のキーの最小/最大値を持つオブジェクトを取得する方法Pythonで特定のキーのオブジェクトの最小値/最大値を取得する方法は?

list = [ 
    {'price': 2, 'amount': 34}, 
    {'price': 7, 'amount': 123}, 
    {'price': 5, 'amount': 495} 
] 

を?これにより 私は、最小値を得ることができます。

min(obj['price'] for obj in list) # 2 

をしかし私が取得したいことは

オブジェクト全体で{ '価格':2 '量':34}

どうすればいいですか? foreachなどがないと簡単な方法がありますか?

+0

オブジェクトに組み込み関数名を付けないように注意してください。 'list' –

+0

[List of Dicts、共通のDictフィールドのmin()値を見つける]の可能な複製](http://stackoverflow.com/questions/5320871/in-list-of-dicts-find-min-value -of-a-common-dict-field) – DavidW

+0

(リンクされた質問のほとんどの回答は価格を返すだけなので、おそらくそれは重複していません) – DavidW

答えて

5

keyあなたmin機能のために使用します。

from operator import itemgetter 

min(my_list, key=itemgetter('price')) 

はまた、Pythonのあなたの変数として、キーワードおよび/またはデータ構造の名前を内蔵し、オブジェクト名を使用しないでください。それは、組み込みの名前をシャドーイングすることによってインタープリタを混乱させます。

2

Kasramvdの回答を追加するには、ラムダでこれを行うこともできます。

>>> foo = [ 
...  {'price': 2, 'amount': 34}, 
...  {'price': 7, 'amount': 123}, 
...  {'price': 5, 'amount': 495} 
... ] 
>>> max(foo, key=lambda x: x['price']) 
{'amount': 123, 'price': 7} 
>>> min(foo, key=lambda x: x['price']) 
{'amount': 34, 'price': 2} 
>>> 
関連する問題