Итерация по словарям в списке для получения нового списка

Как можно произвести итерацию по словарям в списках:

list_1 = [{'name': 'Vacy', 'id': 1}, {'name': 'Koly', 'id': 4}, {'name': 'Vacy', 'id': 2}]
list_2 = [{'count': 5}, {'count': 6}, {'count': 7}]

чтобы получить следующий результат:

merged_list = [{'count': 5, 'name': 'Vacy', 'id': 1}, {'count': 6, 'name': 'Koly', 'id': 4}, {'count': 7, 'name': 'Vacy', 'id': 2}]

Понятное дело, что я извлекаю каждый словарь через for, а потом объединенные словари при помощи append добавляю в новый список merged_list. Но как сделать чтобы они объединились в итоге? Не могу придумать логику.


Ответы (1 шт):

Автор решения: MaxU

Воспользуйтесь функцией zip():

res = [{**a, **b} for a,b in zip(list_1, list_2)]

результат:

In [9]: res
Out[9]:
[{'name': 'Vacy', 'id': 1, 'count': 5},
 {'name': 'Koly', 'id': 4, 'count': 6},
 {'name': 'Vacy', 'id': 2, 'count': 7}]

или так:

res = [{**b, **a} for a,b in zip(list_1, list_2)]

In [11]: res
Out[11]:
[{'count': 5, 'name': 'Vacy', 'id': 1},
 {'count': 6, 'name': 'Koly', 'id': 4},
 {'count': 7, 'name': 'Vacy', 'id': 2}]
→ Ссылка