Python:从值中获取相应的键

Python:从值中获取相应的键,python,dictionary,functional-programming,key-value,Python,Dictionary,Functional Programming,Key Value,因此,d是一个dict(),k是float,这个函数返回正确的值,但是我可以从这个函数返回该值的对应键吗?而不是用dict.values()迭代值,而是用dict.items()迭代键和值,从而产生(键,值)成对 def get_nearest_less_element(d, k): return (min(value for value in map(float, d.values()) if value >= k)) def get_nearest_less_element(

因此,d是一个
dict()
k是
float
,这个函数返回正确的值,但是我可以从这个函数返回该值的对应键吗?

而不是用
dict.values()
迭代值,而是用
dict.items()
迭代键和值,从而产生
(键,值)
成对

def get_nearest_less_element(d, k):
    return (min(value for value in map(float, d.values()) if value >= k))
def get_nearest_less_element(d, k):
    return min(key for key, value in d.items() if float(value) >= k)

与使用
dict.values()
迭代值不同,使用
dict.items()
迭代键和值,从而生成
(键,值)

def get_nearest_less_element(d, k):
    return min(key for key, value in d.items() if float(value) >= k)

如果密钥是您想要的:

def get_nearest_less_element(d, k):
    return min(key for key, value in d.items() if float(value) >= k)
def get_nearest_less_元素(dict_obj,阈值):
最小值,最小键=最小(
((值,键)表示键,如果float(value)<阈值,则表示dict_obj.items()中的值),
key=lambda value\u key:float(value\u key[0])
)
打印('min_值='、min_值'、min_键='、min_键)
返回最小值键

基本上,我所做的与@MrRobot9类似,但我根据值对
(value,key)
对进行排序。请注意,因为我将值放在键之前,所以排序将基于值,不需要
键=
部分,但我只是为了更明确而将其放在那里。

如果key是您想要的:

def get_nearest_less_element(d, k):
    return min(key for key, value in d.items() if float(value) >= k)
def get_nearest_less_元素(dict_obj,阈值):
最小值,最小键=最小(
((值,键)表示键,如果float(value)<阈值,则表示dict_obj.items()中的值),
key=lambda value\u key:float(value\u key[0])
)
打印('min_值='、min_值'、min_键='、min_键)
返回最小值键

基本上,我所做的与@MrRobot9相似,但我对
(值,键)进行了排序基于值,请注意,因为我把值放在键之前,排序是基于值的,不需要<代码>键= 部分,但我只是把它放在更明确的地方。

< P>如果您想返回邻居,请考虑这个解决方案:

def get_nearest_less_element(dict_obj, threshold):
    min_value, min_key = min(
        ((value, key) for key, value in dict_obj.items() if float(value) < threshold),
        key=lambda value_key: float(value_key[0])
    )
    print('min_value =', min_value, ', min_key =', min_key)
    return min_key
此外,通过以下简单测试,您可以检查从旧函数和新函数获得的结果的等效性:

def get_nearest_less_element2(d, k):
    dict_nearest = {value:key for key,value in d.items() if value >= float(k)}
    nearest_index = min(dict_nearest)
    nearest_value = dict_nearest[nearest_index]
    return nearest_index, nearest_value

如果你想返回邻居,考虑这个解决方案:

def get_nearest_less_element(dict_obj, threshold):
    min_value, min_key = min(
        ((value, key) for key, value in dict_obj.items() if float(value) < threshold),
        key=lambda value_key: float(value_key[0])
    )
    print('min_value =', min_value, ', min_key =', min_key)
    return min_key
此外,通过以下简单测试,您可以检查从旧函数和新函数获得的结果的等效性:

def get_nearest_less_element2(d, k):
    dict_nearest = {value:key for key,value in d.items() if value >= float(k)}
    nearest_index = min(dict_nearest)
    nearest_value = dict_nearest[nearest_index]
    return nearest_index, nearest_value

只需使用d.items()在字典上迭代,在那里您可以访问键和值。最后,您将同时拥有键和值。将它们作为元组返回。标题问题的可能重复项是重复项,您真正想知道的是如何迭代键和值,这是一个不同的问题,只需使用d.items()在字典中迭代即可,在那里您可以访问键和值。最后,您将同时拥有键和值。将它们作为元组返回。标题问题的可能重复是重复的,您真正想知道的是如何迭代键和值,这是一个不同的问题