在查找表中返回最接近的值,并放入词典

时间:2018-06-17 14:21:34

标签: python list dictionary

我有一个像这样的词典列表:

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)如何找到最接近的匹配密度,而不是返回相应的容量?

1 个答案:

答案 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中的每个值以查看密度是否更接近。