python 字典嵌套字典賦值異常


針對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': '',} 相當於給了個新地址 。可能原因不對歡迎指出。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM