錯誤示例:
nid = "1,2"
print(nid.split(','))
mydict = {}
datas = []
for i in nid.split(','):
mydict["id"] = str(i)
mydict["checked"] = True
datas.append(mydict)
print(str(datas))
運行結果:
['1', '2']
[{'id': '2', 'checked': True}, {'id': '2', 'checked': True}]
正確示例:
nid = "1,2"
print(nid.split(','))
datas = []
for i in nid.split(','):
mydict = {}
mydict["id"] = str(i)
mydict["checked"] = True
datas.append(mydict)
print(str(datas))
運行結果:
['1', '2']
[{'id': '1', 'checked': True}, {'id': '2', 'checked': True}]
原因解釋:
因爲每次添加的都是同一個內存到list中去了,mydict每次寫入的時候改變了內存中的value,但是地址不變,即是,創建了一次內存空間,只會不斷的改變value了,添加到list中的時候value已經改了。所以需要在for循環裏面去每次循環都創建一個空的dict,以保證之前添加過的不會被改變。