将值设置为字典的字典值

时间:2011-09-29 04:54:02

标签: 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}}

我原以为mydict['a']['sample'] = 1会为字典值设置值,并且会得到:{'a': {'sample': 1}, 'c': {}, 'b': {}}

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

1 个答案:

答案 0 :(得分:6)

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

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

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