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': '',} 相当于给了个新地址 。可能原因不对欢迎指出。

posted @ 2018-10-31 17:01  窃语  阅读(2692)  评论(1编辑  收藏  举报