У меня есть два списка словарей с разными ключами, но перекрывающимися значениями, что-то вроде этого:
list_a = [{key1: value_a, key2: value_b}, {key1: value_c, key2: value_d}, ...]
list_b = [{key3: value_a, key4: value_z}, {key3: value_c, key4: value_z}, ...]
Я хочу объединить их вместе, чтобы я мог добавить key4
к list_a
или указать, что соответствующая запись не найдена.
Я использовал вложенный for
l oop, чтобы сделать это следующим образом:
for i in list_a:
for v in list_b:
if i["key1"] == v["key3"]:
i["key4"] = v["key4"]
else:
i["key4"] = False
Это не кажутся очень эффективными в программном плане, так как мне нужно l oop через все list_b
для каждого значения list_a
. Есть ли более эффективный способ сделать это?
Фактические данные, с которыми я работаю, являются более сложными, поэтому у меня есть несколько условий для сопоставления в каждом списке.
Я посмотрел в понимании списка, но не был уверен, какой путь к go с этим.
Любые указатели (для этого новичка!) приветствуются!
Редактировать: Ожидаемый результат:
list_a = [{key1: value_a, key2: value_b, key4: value_z},
{key1: value_c, key2: value_d, key4: value_z},
{key1: value_e, key2: value_f, key4: False}, ...]
Обычно находят подходящие записи в list_b
- list_a
на основе значений, затем обновляют list_a
другими парами kv из совпадений или указывают, что совпадение не найдено.