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
,表示您先前定义的词典。因此,您对dictionarya
所做的任何更改都将反映在dictionaryb
中。字典b
中的文本a
只是字典aa
的一个引用对象,一个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'])
查看它们是否都是同一对象?因此,如果您通过任一引用更改对象,那么无论您如何访问该对象,它都将被更改。另见