在由字符串格式的值组成的python字典中查找值最少的键
我有一本字典在由字符串格式的值组成的python字典中查找值最少的键,python,Python,我有一本字典 d = {1:'1.112',2:'3.084',3:'6.2',4:'not_valid',5:'0.235'} 我想在字典中找到值最小的键 如果我所有的值都是int或float,我可以使用min(d,key=d.get)轻松地获得它 但是我的值的数据类型是str 我想忽略值'not_valid'并找到最小值,即0.235 与之对应的键=5您可以创建自己的函数,尝试转换为float,如果失败(如“not_valid”的情况),则返回math.nan,然后使用之前尝试的相同技术,
d = {1:'1.112',2:'3.084',3:'6.2',4:'not_valid',5:'0.235'}
我想在字典中找到值最小的键
如果我所有的值都是int或float,我可以使用min(d,key=d.get)
轻松地获得它
但是我的值的数据类型是str
我想忽略值'not_valid'
并找到最小值,即0.235
与之对应的键=
5
您可以创建自己的函数,尝试转换为float
,如果失败(如“not_valid”的情况),则返回math.nan
,然后使用之前尝试的相同技术,将该函数作为键传递给min
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])
因此:
如果不同的键具有相同的值怎么办?@S.M.Styvane然后选择任意一个键。这将被视为异常值
>>> min(d, key=custom_key)
5