了解Python 字典中的淺複製:為什麼副本中的更新不會影響原始內容
使用Python 字典時,重要的是了解淺複製和深複製之間的差異。淺複製會建立一個新字典,其中包含對與原始字典相同的物件的引用,而深複製則會建立一個包含物件副本的新字典。
使用 dict.copy() 進行淺複製
dict.copy() 方法執行字典的淺表複製。這意味著新字典將包含對儲存在原始字典中的相同物件的引用。因此,對副本所做的任何更改也將反映在原始詞典中。
範例:
original = {'a': 1, 'b': 2} new = original.copy() new.update({'c': 3}) print(original) # {'a': 1, 'b': 2} print(new) # {'a': 1, 'c': 3, 'b': 2}
在此範例中,dict.copy () 方法建立一個新字典new,其中包含對與原始字典相同的物件的引用。當我們使用 {'c': 3} 更新副本時,原始檔案和副本都會反映此變更。
為什麼副本中的更新不會影響原始文件
淺副本中的更新不影響原始副本的原因是副本僅包含對對象的引用。當我們更新副本時,我們不會更改實際對象,而只會更改引用。
這與列表相反,其中淺表副本包含對列表本身的引用,而不是其中的元素。當我們更新清單的副本時,我們正在更新清單中的元素,這會影響副本和原始元素。
使用 copy.deepcopy() 進行深度複製
要建立與原始字典完全隔離的字典副本,我們可以使用 copy.deepcopy() 函數。此函數遞歸複製字典中的所有對象,建立具有不同引用的新結構。
範例:
import copy original = {'a': 1, 'b': 2} new = copy.deepcopy(original) new.update({'c': 3}) print(original) # {'a': 1, 'b': 2} print(new) # {'a': 1, 'c': 3, 'b': 2}
在此範例中,copy.deepcopy( ) 函式建立一個新字典 new,其中包含原始字典中物件的副本。當我們更新副本時,原始字典不受影響。
以上是為什麼更新 Python 字典的淺表副本不會影響原始字典?的詳細內容。更多資訊請關注PHP中文網其他相關文章!