我在 python 解释器中尝试了以下操作:
>>> a = []
>>> b = {1:'one'}
>>> a.append(b)
>>> a
[{1: 'one'}]
>>> b[1] = 'ONE'
>>> a
[{1: 'ONE'}]
这里,添加字典后b
到列表 a
,我正在更改键对应的值1
在字典b
.不知何故,这种变化也反射(reflect)在列表中。当我将字典附加到列表时,我不只是附加字典的值吗?看起来好像我已将指向字典的指针附加到列表中,因此对字典的更改也反射(reflect)在列表中。
我不希望更改反射(reflect)在列表中。我该怎么做?
最佳答案
您是正确的,因为您的列表包含对原始字典的引用。
a.append(b.copy())
应该可以解决问题。
请记住,这是一个浅拷贝。另一种方法是使用 copy.deepcopy(b)
,这会进行深层复制。
关于python - 将字典附加到列表 - 我看到类似行为的指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5244810/