num = 20
list_1 = [4, 9, 15, 25, 19, 23, 66]
(sorted(list_1, key=lambda x: (abs(x - k.at[d, 'close_hfq']), x)))[0:3]
这3行代码可以找出我给出的num,在list_1里面找出与num最接近的3个数字,最后他会返回一个这样的列表给我:
[19, 23, 15]
那现在我有一个这样的列表,里面的元素不是数字,而是一个字典,字典里面的值才是数字
num = 20
list_2 = [{'a': 4}, {'b': 9}, {'c': 15}, {'d': 25}, {'e': 19}, {'f': 23}, {'g': 66}]
要怎样写代码,才能实现在list_2里面找出与num最接近的3个字典最后会返回一个这样的列表给我
[ {'e': 19}, {'f': 23}, {'c': 15} ]
sorted(list_2, key=lambda x: abs(list(x.values())[0]-num))[:3]
list_2 = [{'a': 4}, {'b': 9}, {'c': 15}, {'d': 25}, {'e': 19}, {'f': 23}, {'g': 66}]
new_value_list = []
new_index = []
for x in list_2:
for k, v in x.items():
new_value_list.append(v)
new_index.append(k)
abs_list = []
for x in new_value_list:
abs_list.append(abs(x - 20))
value_index = []
for x in sorted(abs_list)[0:3]:
value_index.append(abs_list.index(x))
new_dict = {}
for x in new_index:
if new_index.index(x) in value_index:
new_dict[x] = new_value_list[new_index.index(x)]
print(new_dict)