📜  python 复制字典 - Python (1)

📅  最后修改于: 2023-12-03 14:46:13.844000             🧑  作者: Mango

Python 复制字典

在Python中,字典可以通过复制操作创建一个新的字典。这种复制操作有两种方式:浅复制和深复制。

浅复制

浅复制是指复制字典中的键和值,但是对于嵌套的对象(例如列表或字典),只是复制了对象的引用,而不是对象本身。因此,在原始字典中修改嵌套对象,也会反映在复制的字典中。

以下是使用浅复制操作创建新字典的示例:

dict1 = {'a': [1,2,3], 'b': {'x': 1, 'y': 2}}
dict2 = dict1.copy()

dict2['a'].append(4)
dict2['b']['z'] = 3

print(dict1) # {'a': [1,2,3,4], 'b': {'x': 1, 'y': 2, 'z': 3}}
print(dict2) # {'a': [1,2,3,4], 'b': {'x': 1, 'y': 2, 'z': 3}}

上述示例中,我们通过dict1.copy()创建了一个新字典dict2,然后我们对dict2进行了一些修改,例如向列表'a'中添加一个新元素,并向字典'b'中添加一个新的键/值对。在最后,我们输出了dict1dict2的内容,发现它们的内容都发生了相同的修改,说明了浅复制只复制了对象的引用。

深复制

与浅复制相反,深复制是指完全复制字典及其嵌套的所有对象,而不复制任何引用。因此,修改原始字典中的嵌套对象,不会反映在复制的字典中。

以下是使用深复制操作创建新字典的示例:

import copy

dict1 = {'a': [1,2,3], 'b': {'x': 1, 'y': 2}}
dict2 = copy.deepcopy(dict1)

dict2['a'].append(4)
dict2['b']['z'] = 3

print(dict1) # {'a': [1,2,3], 'b': {'x': 1, 'y': 2}}
print(dict2) # {'a': [1,2,3,4], 'b': {'x': 1, 'y': 2, 'z': 3}}

在上述示例中,我们使用了copy模块中的deepcopy函数,创建了一个完全独立的新字典dict2。然后,我们对dict2进行了一些修改,例如向列表'a'中添加一个新元素,并向字典'b'中添加一个新的键/值对。在最后,我们输出了dict1dict2的内容,发现它们的内容不发生任何修改,说明了深复制完全复制了字典及其嵌套的所有对象。

总结

在Python中,复制字典有两种方式:浅复制和深复制。浅复制只复制对象的引用,对于嵌套的对象,只是复制了对象的引用,而不是对象本身。而深复制是完全复制字典及其嵌套的所有对象,不复制任何引用。因此,在进行复制操作时需要根据需求选择适合的操作。