我正在嘗試創建一個可以附加到for循環中的列表的字典。但是,如果我使用fromkeys
創建字典,則列表將成爲「指針」的副本,而不是新列表。例如,創建與列表不同的空白列表的字典
newdict = dict.fromkeys(range(10), [])
- 或 -
newdict = dict.fromkeys(range(10), list())
兩者產生相同的數據結構,具有相同的列表作爲值對的字典。所以,當任何密鑰更新時,例如 - newdict[0].append(100)
的print newdict
相應的輸出是:
{0: [100], 1: [100], 2: [100], 3: [100], 4: [100], 5: [100], 6: [100], 7: [100], 8: [100], 9: [100]}
如何避免這種情況,而不必通過一個迭代的for循環有什麼想法?提前致謝。
輕微:您的意思是'newdict [0] .append(100)',或'newdict [0] + = [100]',而不是'newdict [0] = 100'。 – DSM
我沒有得到3.3.3的這種行爲:'newdict [0] = 100'產生'{0:100,1:[],2:[],3:[],4:[],5: [],6:[],7:[],8:[],9:[]}'... – MattDMo
@DSM - 是的,謝謝我糾正錯誤。 – paulski