Обновление списка словарей python с помощью пары ключ, значение из другого списка

Скажем, у меня есть следующий список словарей для python:

dict1 = [{'domain':'Ratios'},{'domain':'Geometry'}]

и список вроде:

list1 = [3, 6]

Я хочу обновить dict1 или создать другой список следующим образом:

dict1 = [{'domain':'Ratios', 'count':3}, {'domain':'Geometry', 'count':6}]

Как мне это сделать?

Ответ 1

>>> l1 = [{'domain':'Ratios'},{'domain':'Geometry'}]
>>> l2 = [3, 6]
>>> for d,num in zip(l1,l2):
        d['count'] = num


>>> l1
[{'count': 3, 'domain': 'Ratios'}, {'count': 6, 'domain': 'Geometry'}]

Другой способ сделать это, на этот раз с пониманием списка, которое не мутирует оригинал:

>>> [dict(d, count=n) for d, n in zip(l1, l2)]
[{'count': 3, 'domain': 'Ratios'}, {'count': 6, 'domain': 'Geometry'}]

Ответ 2

Вы можете сделать это:

for i, d in enumerate(dict1):
    d['count'] = list1[i]

Ответ 3

Вы можете сделать это:

# list index
l_index=0

# iterate over all dictionary objects in dict1 list
for d in dict1:

    # add a field "count" to each dictionary object with
    # the appropriate value from the list
    d["count"]=list1[l_index]

    # increase list index by one
    l_index+=1

Это решение не создает новый список. Вместо этого он обновляет существующий список dict1.

Ответ 4

Использование понимания списка будет питоническим способом сделать это.

[data.update({'count': list1[index]}) for index, data in enumerate(dict1)]

dict1 будет обновляться с соответствующим значением из list1.