我有一个像这样的词典列表:
my_data = [{'id': 'A', 'density':0.7},
{'id': 'B', 'density':1.5},
{'id': 'C', 'density':3.75}]
和查找表(lut)作为这样的词典列表:
lut = [{'density': 1.1, 'capacity': 5.19},
{'density': 2.5, 'capacity': 9.42},
{'density': 4.3, 'capacity': 16.78}]
对于my_data中的每个字典,我想采用密度'并找到最接近的相应密度'在lut中的价值。
然后我想添加相应的容量'这个词的项目。
我已经开始使用这样的功能:
def function_for_adding_capacity(data, lut):
my_list_of_dicts = []
for datum in data:
for item in lut:
datum['capacity'] = ...
my_list_of_dicts.append({
'id': datum['id'],
'density': datum['density'],
'capacity': datum['capacity'],
return my_list_of_dicts
我只是不确定(1)我是否需要第二个循环,以及(2)如何找到最接近的匹配密度,而不是返回相应的容量?
答案 0 :(得分:0)
如果你想将容量附加到my_data
词典,你可以用
def add_capacities(my_data, lut):
for data in my_data:
closest = {'density': float('inf'), 'capacity': None}
for l in lut:
if abs(l['density'] - data['density']) < abs(closest['density'] - data['density']):
closest = l
data['capacity'] = closest['capacity']
以最接近的无穷大匹配开始,然后测试lut
中的每个值以查看密度是否更接近。