Возврат ближайшего значения в таблицу поиска и внесение в список диктовок

1

У меня есть список таких диктофонов:

my_data = [{'id': 'A', 'density':0.7},
           {'id': 'B', 'density':1.5},
           {'id': 'C', 'density':3.75}]

и Look Up Table (lut) в виде списка таких как:

lut = [{'density': 1.1, 'capacity': 5.19},
       {'density': 2.5, 'capacity': 9.42},
       {'density': 4.3, 'capacity': 16.78}]

Для каждого dict в my_data я хочу взять "плотность" и найти ближайшую соответствующую "плотность" значения в луте.

Затем я хочу добавить соответствующий элемент "capacity" в этот dict.

Я начал с такой функции:

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) что делать, чтобы найти ближайшую плотность соответствия, чем вернуть соответствующую емкость?

Теги:
list
dictionary

1 ответ

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 чтобы увидеть, lut ли плотность.

  • 0
    Это сработало, спасибо Доминик.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню