了解 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中文网其他相关文章!