代码:
>>> 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': {}}
。
我在这里缺少什么?我应该怎么做才能获得预期的输出?
答案 0 :(得分:6)
问题是您为每个键添加了相同的字典到mydict。您想添加不同的词典,如下所示:
mydict = dict((key, {}) for key in keylist)
在上面的代码中,您创建了一个与每个键配对的新词典。在原始代码中,fromkeys函数接受了参数(您提供的空字典)并添加了精确的参数 - 您创建的单个空字典以传递给函数 - 添加到每个键。当那个字典发生变化时,那个变化就出现了。