Python中嵌套字典的问题

Python中嵌套字典的问题,python,dictionary,Python,Dictionary,我有一些字典 a = {1: 'a', 2: 'b'} 我有一些字典b,它的值是a b = {1: a} 如果我打印b,请更改a,然后再次打印b,例如: print(b) a[1] = 'd' print(b) 我得到以下信息: {'a': {1: 'a', 2: 'b'}} {'a': {1: 'd', 2: 'b'}} 为什么会发生这种情况?如果您将一个值设置为一个变量,然后进行更新,dict是否会自动更新?谢谢。如果你写信 b = {1: a} 值1,即a,表示您先前定义的词典。

我有一些字典

a = {1: 'a', 2: 'b'}
我有一些字典b,它的值是a

b = {1: a}
如果我打印b,请更改a,然后再次打印b,例如:

print(b)
a[1] = 'd'
print(b)
我得到以下信息:

{'a': {1: 'a', 2: 'b'}}
{'a': {1: 'd', 2: 'b'}}
为什么会发生这种情况?如果您将一个值设置为一个变量,然后进行更新,dict是否会自动更新?谢谢。

如果你写信

b = {1: a}

值1,即
a
,表示您先前定义的词典。因此,您对dictionary
a
所做的任何更改都将反映在dictionary
b
中。字典
b
中的文本
a
只是字典
a

a
的一个引用对象,一个dict,保存对字典
{1:'a',2:'b'}
的引用。您所做的任何更改都会反映在词典中

由于python中的所有内容都是对象,这意味着每个变量 这只是一个参考


因此,由于
第一次打印(b)
后dict的变化,
第二次打印(b)
不同。

否。字典
b
中的值指向变量
a
。后者的任何变化都将反映在前者中。如果希望它们分开,只需复制字典:
b={1:a.copy()}
注意
a.copy()
是一个浅拷贝。
a.copy()
的值的突变将通过
a
可见。请执行此操作<编码>打印(id(a));打印(id(b['a'])
查看它们是否都是同一对象?因此,如果您通过任一引用更改对象,那么无论您如何访问该对象,它都将被更改。另见