Python dictionary字典的複製方法

2021-08-15 23:35:19 字數 1074 閱讀 9386

dict2 = dict1 #第一種你想到的複製方法

>>

> dict1 =

>>

> dict2 = dict1

>>

> dict1[

'a']=2

>>

> dict2

原因:設想是乙個物件(型別是詞典的物件),dict2 = dict1,不過是這個物件的不同名字而已,因此並不是複製。

dict2 = dict1.copy or dict2.update(dict1) #第一種你查到的方法

兩種方法效果相同,以copy為例:

>>

> dict1 =

>>

> dict2 = dict1.copy(

)>>

> dict1[

'a']=2

>>

> dict2

看到這裡,小心子雀躍,但是還留乙個坑,繼續往下看:

>>

> dict1[

'c']3)

>>

> dict2

呵呵噠,copy方法對多層的字典的複製表示無能為力,這個地方很容易掉坑呢。

dict2 = copy.deepcopy(dict3) #千呼萬喚始出來的方法

最後是放大招的時候了,站在python自帶copy模組的肩膀上:

>>

> dict1 =

>>

>

import copy

>>

> dict2 = copy.deepcopy(dict1)

>>

> dict1[

'a']=2

>>

> dict1[

'c']3)

>>

> dict2

要是你不信,可以再多給dict1巢狀幾層~~真理絕對是經得起考驗的

參考

python 字典的淺複製與深複製

copy 方法返回乙個新字典,包含的鍵值對與原來的字典相同,這個方法執行的是淺複製,因為值本身是原件,而非副本 如上圖所示,當替換副本中的值時,原件不受影響。然而修改副本中的值,原件也將發生變化,因為這是就地修改而不是替換,原件指向的也是被修改的值。即淺複製的副本發生替換時,原件不受影響,發生修改時...

Python dict字典的淺複製與深複製

python中針對dict字典有兩種複製 淺複製 利用 copy 或者 dict 複製後對原dict的內部子物件 方括號內元素 進行操作時,由淺複製得到的dict會受該操作影響 深複製 利用 deepcopy 複製後對原dict的內部子物件 方括號內元素 進行操作時,由深複製得到的dict不會受該操...

Python 字典的setdefault 方法

setdefault key default if key is in the dictionary,return its value.if not,insert key with a value of default and return default.default defaults to n...