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