Добавить новое поле в словарь со значением из списка

Есть список списков

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]
→ Ссылка