python 字典巢狀字典賦值異常
阿新 • • 發佈:2018-10-31
針對dict中 巢狀dict 出現複製異常
lists={} test=['s1','s2','s3'] data = {'value': '',} for i in range(2): lists[i]=data # dic = {0: {'value': '',}, 1:{'value': '',}} for j in range(2): # print(j) lists[j]['value']=test[j] print(lists)
結果
{0: {'value': 's2'}, 1: {'value': 's2'}}
很奇怪0,1的value都是s2
解決方法:
lists={}
test=['s1','s2','s3']
data = {'value': '',}
for i in range(2):
lists[i]={'value': '',}
# dic = {0: {'value': '',}, 1:{'value': '',}}
for j in range(2):
# print(j)
lists[j]['value']=test[j]
print(lists)
或
lists = {0: {'value': '',}, 1:{'value': '',}} for j in range(2): # print(j) lists[j]['value']=test[j] print(lists)
二者的結果均一致
{0: {'value': 's1'}, 1: {'value': 's2'}}
猜測原因:可能是因為data是一個地址 ,lists[i]=某個地址,當給list[i]賦值時相當於給某個地址賦值,故其中一個值變了,其餘值也跟著變。 lists[i]={'Url': '',} 相當於給了個新地址 。可能原因不對歡迎指出。