2011-09-29 110 views
2

代码:设置一个值,字典的字典值

>>> 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': {'sample': 1}, 'c': {}, 'b': {}}

我在这里错过了什么?我需要做些什么才能获得预期的产出?

回答

6

问题是,你添加相同字典mydict为每个关键。要添加不同的字典,像这样:

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

在上面的代码,创建一个新的字典来搭配每个键。在您的原始代码中,来自keys的函数接受了参数(您提供的空字典),并将确切的参数 - 您创建的用于传递给函数的单个空字典 - 添加到每个键。当一本字典发生变化时,那个变化无处不在。