2011-09-29 111 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的函數接受了參數(您提供的空字典),並將確切的參數 - 您創建的用於傳遞給函數的單個空字典 - 添加到每個鍵。當一本字典發生變化時,那個變化無處不在。