在由字符串格式的值组成的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