2016-04-22 5 views

Antwort

2

Sie können eine benutzerdefinierten key Funktion zur min() eingebauten Funktion liefern:

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

Oder, wenn Sie nur einen minimalen Kostenwert selbst benötigen, können Sie einen minimalen Kostenwert aus der Liste der Kostenwerte finden :

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

jeder pythonic Vorschlag für den zweiten Teil, wo ich sage: „und dann die andere Taste, Wert-Paare aus diesem Wörterbuch entfernen“? –

+0

@KristofPal können Sie diese minimale "Kosten" auf diese Weise erhalten: 'min (lst, Schlüssel = Lambda-Element: float (Element ['Kosten'])) [" Kosten "]' ..wenn ich diesen Teil richtig verstehe. Vielen Dank. – alecxe

+0

@KristofPal hat eine weitere Option hinzugefügt, falls wir noch auf derselben Seite sind :) – alecxe

2

@ Alecxe Lösung ist ordentlich und kurz, +1 für ihn. hier ist meine Art und Weise, es zu tun:

>>> 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'} 
Verwandte Themen