Установка значения в словарное значение словаря - PullRequest
2 голосов
/ 29 сентября 2011

Код:

>>> 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 Ответ

6 голосов
/ 29 сентября 2011

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...