Итерация по словарям в списке для получения нового списка
Как можно произвести итерацию по словарям в списках:
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}]