由價值觀,我有一本字典找到鑰匙在字典蟒蛇至少值字符串格式
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
由價值觀,我有一本字典找到鑰匙在字典蟒蛇至少值字符串格式
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
您可以創建自己的功能它會嘗試轉換爲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
一種可能的方法來解決這個問題是:
def custom_key(k):
if d[k] == 'not_valid':
return float('inf')
return float(d[k])
這樣:
>>> min(d, key=custom_key)
5
如果不同的密鑰具有相同的價值? – styvane
@ S.M.Styvane然後選擇任何一個密鑰。這將被視爲異常 – Shubham