问题描述:
用字典的update接口更新值,健不同,值是由列表通过clear和append处理,代码如下
temp = dict()
value = []
value.clear()
value.append(2.3)
value.append(2.3)
value.append(4.3)
temp.update({"feed": value})
value.clear()
value.append(0)
value.append(0)
value.append(0)
temp.update({"sec_pos": value})
value.clear()
value.append(1)
value.append(1)
value.append(1)
temp.update({"fct": value})
print(temp)
结果如下:
{'feed': [1, 1, 1], 'sec_pos': [1, 1, 1], 'fct': [1, 1, 1]}
期待的结果理应是下面的值:
{'feed': [2.3, 2.3, 4.3], 'sec_pos': [0, 0, 0], 'fct': [1, 1, 1]}
调试项目的时候遇到这个奇怪的问题,这是为什么呢?
原来update({"feed": value})时,并不会把值拷贝一份到字典中,value保存的还是原来的列表,当value变化时,字典中的value也会随之变化!!!
解决问题:
代码修改如下:
temp = dict()
value = []
value.clear()
value.append(2.3)
value.append(2.3)
value.append(4.3)
temp.update({"feed": value.copy()})
value.clear()
value.append(0)
value.ap

在使用Python字典的update方法更新值时,如果值为列表并经过clear和append操作,会导致字典中保存的是原始列表的引用而非副本。因此,当列表内容改变时,字典中的值也会同步更新。解决这个问题需要在更新字典时创建列表的副本,确保字典存储独立的列表实例。
最低0.47元/天 解锁文章
464

被折叠的 条评论
为什么被折叠?



