簡體   English   中英

在查詢表中返回最接近的值,並放入字典列表中

[英]Return closest value in look up table, and put in list of dicts

我有這樣的字典列表:

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

如果要將容量附加到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每個值以查看密度是否更接近。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM