Присваивание значений словарю
Можно ли словарю присвоить сразу несколько значений по ключам? Имеется в виду что-нибудь вроде:
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]))