2017-07-31 41 views
1

由價值觀,我有一本字典找到鑰匙在字典蟒蛇至少值字符串格式

d = {1:'1.112',2:'3.084',3:'6.2',4:'not_valid',5:'0.235'} 

我想找到我的字典最少值的關鍵。

我可以很容易地使用min(d, key=d.get),如果我所有的值都是int或float。

但我的值的數據類型是str

我想忽略的價值'not_valid',發現即0.235 的最小數量和對應的關鍵= 5

+0

如果不同的密鑰具有相同的價值? – styvane

+0

@ S.M.Styvane然後選擇任何一個密鑰。這將被視爲異常 – Shubham

回答

2

您可以創建自己的功能它會嘗試轉換爲float,如果失敗(如'not_valid'的情況下),則返回math.nan,然後使用您之前嘗試使用的相同技術,將該函數作爲作爲key

import math 

def to_float(s): 
    try: 
     return float(s) 
    except ValueError: 
     return math.nan 

>>> min(d, key=lambda i: to_float(d[i])) 
5 
1

一種可能的方法來解決這個問題是:

def custom_key(k): 
    if d[k] == 'not_valid': 
    return float('inf') 
    return float(d[k]) 

這樣:

>>> min(d, key=custom_key) 
5