Добавить новое поле в словарь со значением из списка
Есть список списков
a = [[tiger, bear], [tit, sparrow], [perch, herring]]
И список словарей:
b = [{'n': 1, 'id': [3]}, {'n': 4, 'id': [1, 2, 3, 4]}, {'n': 1, 'id': [1]}]
Необходимо в каждый словарь из списка добавить соответствующий ему список:
b = [{'n': 1, 'id': [3], 'animal': [tiger, bear]}, {'n': 4, 'id': [1, 2, 3, 4], 'animal': [tit, sparrow]}, {'n': 1, 'id': [1], 'animal': [perch, herring]}]
Пыталась использовать это, но работает не так как надо.
for i in range(0, len(a)):
for j in range(0, len(b)):
b[j]['animal'] = a[i]
print(b)
Ответы (2 шт):
Автор решения: Zhihar
→ Ссылка
если в лоб, то можно так:
res = []
for obj in zip(a, b):
obj[1].update({'animal': obj[0]})
res.append(obj[1])
print(res)
если однострочно, то с версии python 3.9 можно так:
b = [obj[1] | {'animal': obj[0]} for obj in zip(a, b)]
а с версии python 3.5 можно так:
b = [{**obj[1], 'animal': obj[0]} for obj in zip(a, b)]
Автор решения: SergFSM
→ Ссылка
еще один способ "в лоб":
for i in range(len(a)):
b[i]['animal'] = a[i]