Как объединить список словарей в Python? У меня есть 2 набора данных: a = [{'date': '01.01.2019'}, {'date': '1/1/2020'}, {'date': '01.01.2021' }] b = [{'value': '2'}, {'value': '5'}, {'value': '6'}] Как я могу объединить ...

3
Mizzle Lee 23 Янв 2021 в 07:00

5 ответов

Лучший ответ

Предполагая, что оба являются list из dict одинаковой длины, вы можете:

c = [{**_d, **b[i]} for i, _d in enumerate(a)]
2
Pavel 23 Янв 2021 в 04:05

Для этого есть два метода. Один :

for i in range(len(a)):
    a[i].update(b[i])
    
print(a)

Если у вас Python 3.9 и выше

new_list = [a[i]|b[i] for i in range(len(a))]

Для проверки вашей версии Python:

import sys
print (sys.version)
0
Cdaman 23 Янв 2021 в 04:55
c = [{**a1, **b1} for a1,b1 in zip(a,b)]

Здесь я использовал понимание списка, ** a1 и ** b1 используются для распаковки и сопоставления пары ключ-значение обоих списков словарей.

2
Prakash Dahal 23 Янв 2021 в 04:33

В Python 3.9 оператор объединения добавлен в dict, поэтому это работает:

>>> a = [{'date':'1/1/2019'},{'date':'1/1/2020'},{'date':'1/1/2021'}]
>>> b = [{'value':'2'},{'value':'5'},{'value':'6'}]
>>> [x|y for x,y in zip(a,b)]
[{'date': '1/1/2019', 'value': '2'}, {'date': '1/1/2020', 'value': '5'}, {'date': '1/1/2021', 'value': '6'}]

Подробнее см. PEP 584.

2
Mark Tolonen 23 Янв 2021 в 04:19

[{**i[0],**i[1]} for i in zip(a,b)]

2
brunoff 23 Янв 2021 в 04:13