在4個數字中,找到接近的3個數字

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)