Присваивание значений словарю

Можно ли словарю присвоить сразу несколько значений по ключам? Имеется в виду что-нибудь вроде:

 d = {'val1':0, 'val2':0, 'val3':0}

 d['val1', 'val2', 'val3'] = [1,2,3] 

чтобы в результате было:

d.values() 
output: [1,2,3]

Я сейчас делаю так:

{key: val for key, val in zip(d.keys(),[1,2,3])}

То есть приходится создавать новый словарь, но мне бы хотелось переприсваивать некоторые значения в исходном словаре, скажем, 20 значений из 30 и писать 20 строк кода или создавать новый словарь для этого не хочется.


Ответы (3 шт):

Автор решения: CrazyElf

Да ну вроде и без особых ухищрений не сильно громоздко будет выглядеть через for и zip:

d = {'val1':0, 'val2':0, 'val3':0}
for k,v in zip(d, [1,2,3]):
  d[k] = v
print(d.values()) 

dict_values([1, 2, 3])

Хотя если вдруг есть вариант в одну строку, мне тоже интересно было бы посмотреть.

Примечание: в Python3 при итерировании словаря перебираются ключи.

→ Ссылка
Автор решения: Илья Митусов
d = {}
keys, values = ['a', 'b', 'c', 'd'], [1, 2, 3, 4]
d.update(zip(keys, values))
d.values()

dict_values([1, 2, 3, 4])
→ Ссылка
Автор решения: strawdog
d = {'val1':0, 'val2':0, 'val3':0}
d = dict(zip(d.keys(), [1,2,3]))
→ Ссылка