首页 > 编程语言 > 详细

python 嵌套字典赋值 出现相同值 问题

时间:2020-07-07 19:49:09      阅读:110      评论:0      收藏:0      [点我收藏+]

错误代码:

import copy
lists={}
test=[s1,s2,s3]
data = {value: ‘‘,}
for i in range(2):
    lists[i] = data

for j in range(2):
    lists[j][value]=test[j]

print(lists)

结果:

Connected to pydev debugger (build 182.5107.22)
{0: {value: s2}, 1: {value: s2}}

 

改正后代码

import copy
lists={}
test=[s1,s2,s3]
data = {value: ‘‘,}
for i in range(2):
    lists[i] = copy.deepcopy(data)

for j in range(2):
    lists[j][value]=test[j]

print(lists)

结果:

Connected to pydev debugger (build 182.5107.22)
{0: {value: s1}, 1: {value: s2}}

 

原因:

lists[i] = data 在执行 赋值时, 每一次调用的都是 data变量的源地址,并没有改变地址。
所以我们在下面动态的改变值的时候,就会出现改变一个值,所有结果全部改变。
类似于python的浅拷贝和深拷贝。 所以只需要将其变为深拷贝即可。copy.deepcopy().

 

python 嵌套字典赋值 出现相同值 问题

原文:https://www.cnblogs.com/zhaoxianxin/p/13262324.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!