2016-04-22 18 views
0

のリストから最低のキー値を持つ辞書を取得し、私はその辞書から、値のペアを'cost'キーの最小値を持つ辞書を取得し、他のキーを削除したい辞書のリストから辞書

lst = [{'probability': '0.44076116', 'cost': '108.41'} , {'probability': '0.55923884', 'cost': '76.56'}] 

答えて

2

あなたはmin()組み込み関数にカスタムkey機能を供給することができます:

>>> min(lst, key=lambda item: float(item['cost'])) 
{'cost': '76.56', 'probability': '0.55923884'} 

それとも、あなただけのコスト最小値そのものが必要な場合、あなたはコスト値のリストから最小のコスト値を見つけることができます:

costs = [float(item["cost"]) for item in lst] 
print(min(costs)) 
+0

私が言う次の部分のpythonic提案: "そして、その辞書から他のキーと値のペアを削除します"? –

+0

@KristofPalあなたはちょうどこのように最小の 'cost'を得ることができます:' min(lst、key = lambda item:float(item ['cost']))["cost"] '..私はこの部分を正しく理解します。ありがとう。 – alecxe

+0

@KristofPalは、同じページにいる場合に備えてもう1つのオプションを追加しました:) – alecxe

2

@ alecxeの解答はきちんと短く+1です。

>>> dict_to_keep = dict() 
>>> min=1000000 
>>> for d in lst: 
...  if float(d["cost"]) < min: 
...   min = float(d["cost"]) 
...   dict_to_keep = d 
... 
>>> print (dict_to_keep) 
{'cost': '76.56', 'probability': '0.55923884'}