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

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

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

и список как:

list1 = [3, 6]

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

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

Как бы я это сделал?

 yucer12 дек. 2016 г., 10:20
В соответствии с примером заголовок этого вопроса должен быть следующим: «Обновление списка значений словарей python из другого списка». От текущего заголовка я ожидаю, что list1 = [('Ratios', 3), ('Geometry', 6)]

Ответы на вопрос(4)

Ты можешь это сделать

# 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 список.

 jamylak15 мая 2012 г., 02:42
Очень многословно для Python, но все объясняет очень хорошо.
 Harshil Parikh15 мая 2012 г., 04:32
Спасибо за подробное объяснение.
 Thanasis Petsas15 мая 2012 г., 02:44
Да, у тебя есть право! Это очень многословно. Но поскольку здесь есть и другие ответы, менее подробные, я думаю, что было бы неплохо добавить более объяснительное решение ..
Решение Вопроса
>>> 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'}]
 jamylak06 нояб. 2017 г., 23:48
@ amc Вероятно, об этом не стоит беспокоиться: P Но можно запуститьtimeit на это
 amc06 нояб. 2017 г., 19:56
что быстрее в вычислительном отношении?
 Harshil Parikh15 мая 2012 г., 04:32
Благодарность. Второе решение выдает ошибку в текущей форм
 jamylak15 мая 2012 г., 04:33
Вы используете Python 3? Я, вероятно, поменяю его на перекрестную совместимость.
 jamylak15 мая 2012 г., 04:48
Теперь он работает и в Python 3, если это было вашей проблемой:)

Ты мог бы сделать это:

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

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

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

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

 jamylak07 авг. 2012 г., 10:14
-1 Использование списка для мутаций - этон питонический. Используйте простой цикл for.
 Manoj Sahu01 мар. 2016 г., 08:51
Update на продиктованную работу по ссылке не обеспечивают вывод. data.update () возвращает None. Вы выйдете из игры как [Нет, Нет, ....]

Ваш ответ на вопрос