Установка значения в значение словаря словаря

#python #dictionary

#python #словарь

Вопрос:

Код:

 >>> mydict = {}
>>> keylist = ['a','b','c']
>>> mydict=dict.fromkeys(keylist,{})
>>> mydict['a']['sample'] = 1
>>> mydict
{'a': {'sample': 1}, 'c': {'sample': 1}, 'b': {'sample': 1}}
  

Я ожидал mydict['a']['sample'] = 1 , что установлю значение только для значения словаря a и получу это : {'a': {'sample': 1}, 'c': {}, 'b': {}} .

Чего мне здесь не хватает? Что я должен сделать, чтобы получить ожидаемый результат?

Ответ №1:

Проблема в том, что вы добавили один и тот же словарь в mydict для каждого ключа. Вы хотите добавить разные словари, например:

 mydict = dict((key, {}) for key in keylist)
  

В приведенном выше коде вы создаете новый словарь для сопряжения с каждым ключом. В вашем исходном коде функция fromkeys приняла аргумент (предоставленный вами пустой словарь) и добавила этот точный аргумент — тот единственный пустой словарь, который вы создали для передачи в функцию — к каждому из ключей. Когда этот словарь был изменен, это изменение появилось повсюду.