2016-04-22 100 views
0

从词典列表清单,我想获得与最低值的字典的'cost'键,然后删除其他键,值对从词典获取与最低键值字典从字典

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

回答

2

你可以提供一个自定义的key功能的min()内置功能:

>>> 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

第二部分,我说任何Python的建议:“然后删除其他键,从字典值对”? –

+0

@KristofPal你可以通过这种方式获得最小的成本:'min(lst,key = lambda item:float(item ['cost']))[“cost”]'..我正确理解这个部分。谢谢。 – alecxe

+0

@KristofPal增加了一个选项,以防我们仍然处于同一页面:) – 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'}