我有一个只包含一个字典项目的列表。我想修改这个项目并将其附加到另一个列表中。当我追加到另一个列表中时,它仍然保留指针,因为它通过设计进行了引用复制。在Python中按值附加列表元素的变通办法
根据this link即使列表使用[:]表示法复制,它仍保留与其内部对象的链接。
我的问题是我如何解决这个限制,或者有什么解决办法,我想实现?以下是代码片段:
a=[]
b=[]
a=[{'sk' : 1, 'id' : 'P001', 'status' : 'NEW'}]
a[0]['sk']=a[0]['sk']+1
a[0]['status']='CURRENT'
b.append(a[0])
a[0]['sk']=a[0]['sk']+1
a[0]['status']='EXISTING'
b.append(a[0])
b
[{'id': 'P001', 'sk': 3, 'status': 'EXISTING'},
{'id': 'P001', 'sk': 3, 'status': 'EXISTING'}]
正如你所看到的,改变[A]改变所有元素[B]。我也尝试改变b [0],b 1等。它仍然是一样的。
是否有任何解决办法,我正在尝试做什么?
'L [:]'只是一个*浅*复印件;与可变容器的可变容器,你需要一个*深*副本。 – jonrsharpe