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

我有一个嵌套字典,我们称之为字典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’]值.

我在这里做错了吗?这是一个错误吗?

解决方法:

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

这两个陈述使得d [0]和d [1]都引用相同的对象,模板.现在,您可以使用三个名称访问字典,模板,d [0]和d [1].这样做:

d[0]['mean'] = 1

修改字典对象,可以使用上面提到的其他名称来引用.

为了使其按预期工作,您可以创建模板对象的副本,如下所示

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

现在,d [0]和d [1]指的是两个不同的字典对象.

上一篇:mySQL – 将id传递给嵌套查询


下一篇:python – 在下一次迭代中重复使用最后一个元素作为第一个元素