为什么更新一个字典对象会影响其他对象?

21 浏览
0 Comments

为什么更新一个字典对象会影响其他对象?

这个问题已经有了答案

如何复制字典并仅编辑副本

我有一个嵌套的字典,我们称之为字典d。这个字典的键是一个整数,每个键的值是另一个字典。我正在尝试在Python 2.7上更新一个外部键的值,但似乎它正在更新所有外部键的值。

希望这些代码可以让您更容易地理解。这是我的输入。

>>> template = {'mean':0,'median':0}
>>> d[0] = template
>>> d[1] = template
>>> d[0]['mean'] = 1
>>> d

然后这里是输出:

{0: {'mean':1, 'median':0}, 1:{'mean':1,'median':0}}

你看,我只将“1”分配给了d [0] [ \'mean\'],但某种方式d [1] [ \'mean\'] 也被更新了。如果我增加d中的键数,它将仅更改所有d键的[\'mean\']值。

我做错了什么吗?这是一个错误吗?

admin 更改状态以发布 2023年5月21日
0
0 Comments

>>> d[0] = template
>>> d[1] = template

这两个语句将d [0]d [1]都指向同一个对象template。现在可以使用三个名称templated [0]d [1]访问这个字典。 所以这样做:

d[0]['mean'] = 1

修改了一个可以使用前面提到的其他名称引用的字典对象。

要按照您的期望使其正常工作,可以创建template对象的副本,像这样:

>>> d[0] = template.copy()
>>> d[1] = template.copy()

现在, d [0] d [1] 指向两个不同的字典对象。

0