我在python解释器中尝试了以下操作:
>>> >>> a = [] >>> b = {1:'one'} >>> a.append(b) >>> a [{1: 'one'}] >>> b[1] = 'ONE' >>> a [{1: 'ONE'}] >>>
在这里,将字典’b’附加到列表’a’之后,我将更改与字典’a’中的键1对应的值。此更改也以某种方式反映在列表中。当我将字典添加到列表中时,我不仅会添加字典的值吗?好像我已将指向字典的指针附加到列表中,因此对字典的更改也反映在列表中。
我不希望更改反映在列表中。我该怎么做?
感谢您的时间!
您的列表中包含对原始词典的 引用 ,这是正确的。
a.append(b.copy()) 应该可以。
a.append(b.copy())
请记住,这会造成浅表复制。一种替代方法是使用copy.deepcopy(b),它可以复制一个深层副本。
copy.deepcopy(b)