将值设置为字典的字典值

bdh*_*har 2 python dictionary

代码:

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

我期待mydict['a']['sample'] = 1将为一个字典值设置值,并得到这个:{'a': {'sample': 1}, 'c': {}, 'b': {}}.

我在这里错过了什么?我应该怎么做才能获得预期的输出?

Dan*_*l G 6

问题是你为每个键添加了相同的字典到mydict.您想要添加不同的词典,如下所示:

mydict = dict((key, {}) for key in keylist)
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,您创建了一个与每个键配对的新字典.在原始代码中,fromkeys函数接受了参数(您提供的空字典)并添加了精确的参数 - 您创建的单个空字典以传递给函数 - 添加到每个键.当那个字典发生变化时,那个变化就出现了.