python - 将字典附加到列表 - 我看到类似行为的指针

标签 python list dictionary

我在 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/

相关文章:

python - 将 SQLAlchemy 结果作为字典而不是列表返回

python - 如何从包含 munch 的字典中编写 YAML,而不使用 "!munch.Munch"?

c++ - 在 C++ 中按值从映射中删除键、值

python - 通过相同的键python将csv转换为json

python - 在特定条件下使用Python时间戳类型的假期库

python - 布伦特算法的矢量化版本(求根)

python - 在 Python 中找到最接近 3D 给定点的最快方法

c++ - C++ 中的 STL 列表指针

python - 管理大点列表,最好的方法是什么?

c++ - STL 列表 - 如何通过其对象字段查找列表元素