我有一个嵌套字典,我们称之为字典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']值。
我在这里做错了吗?这是一个错误吗?
答案 0 :(得分:5)
>>> d[0] = template
>>> d[1] = template
这两个陈述使d[0]
和d[1]
引用同一个对象template
。现在,您可以使用三个名称template
,d[0]
和d[1]
访问字典。这样做:
d[0]['mean'] = 1
修改字典对象,可以使用上面提到的其他名称进行引用。
为了让您按预期工作,您可以创建template
对象的副本,就像这样
>>> d[0] = template.copy()
>>> d[1] = template.copy()
现在,d[0]
和d[1]
引用了两个不同的字典对象。