Python:从value中获取对应的key
Python: get the corresponding key from value
def get_nearest_less_element(d, k):
return (min(value for value in map(float, d.values()) if value >= k))
所以,d 是 dict()
而 k
是 float
,这个函数 return 给我正确的值,但是我可以 return此函数中该值的对应键?
def get_nearest_less_element(d, k):
return min(key for key, value in d.items() if float(value) >= k)
不是使用 dict.values()
遍历值,而是使用 dict.items()
遍历键和值,这会产生 (key, value)
对。
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(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
基本上,我所做的与@MrRobot9 类似,但我根据值对 (value, key)
对进行了排序。请注意,因为我把值放在键之前,所以排序将基于值,所以不需要 key=
部分,但我只是把它放在那里更明确。
如果您想 return 邻居的 ,请考虑以下解决方案:
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={1:11, 100:333, 40:44, 9:21, 4:99, 88:31, 7:77}
test_res = []
for k in range(0, 100, 5):
test_res.append(get_nearest_less_element(d,k) == get_nearest_less_element2(d,k)[0])
print(all(test_res))
# True
def get_nearest_less_element(d, k):
return (min(value for value in map(float, d.values()) if value >= k))
所以,d 是 dict()
而 k
是 float
,这个函数 return 给我正确的值,但是我可以 return此函数中该值的对应键?
def get_nearest_less_element(d, k):
return min(key for key, value in d.items() if float(value) >= k)
不是使用 dict.values()
遍历值,而是使用 dict.items()
遍历键和值,这会产生 (key, value)
对。
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(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
基本上,我所做的与@MrRobot9 类似,但我根据值对 (value, key)
对进行了排序。请注意,因为我把值放在键之前,所以排序将基于值,所以不需要 key=
部分,但我只是把它放在那里更明确。
如果您想 return 邻居的 ,请考虑以下解决方案:
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={1:11, 100:333, 40:44, 9:21, 4:99, 88:31, 7:77}
test_res = []
for k in range(0, 100, 5):
test_res.append(get_nearest_less_element(d,k) == get_nearest_less_element2(d,k)[0])
print(all(test_res))
# True