1. 程式人生 > >鍵賦值往list中新增dict,前面所有字典總被最後一個覆蓋

鍵賦值往list中新增dict,前面所有字典總被最後一個覆蓋

list = [] 
a = {'a':'1', 'b':'1'}
list.append(a)
a['a'] = '2'
a['b'] = '2'    
list.append(a) 

#最終結果:
[{‘a’: ‘2’, ‘b’: ‘2’}, {‘a’: ‘2’, ‘b’: ‘2’}]

原因:append()方法只是將字典的地址存到list中,而鍵賦值的方式就是修改地址,所以才導致覆蓋的問題

解決:使用copy() 或者 deepcopy()

list = [] 
a = {'a':'1', 'b':'1'}
list.append(a.copy())
a[
'a'] = '2' a['b'] = '2' list.append(a.copy()) print(list) #最終結果: [{‘a’: ‘1’, ‘b’: ‘1’}, {‘a’: ‘2’, ‘b’: ‘2’}]

注:當字典中存在list的時候需要使用deepcopy()