Python copy() 语法
copy() 是 Python 字典的一个方法,它用于浅复制(拷贝)一个字典。新字典与原字典相互独立,但嵌套对象仍共享引用。
语法:
dict.copy()说明:
copy() 方法不接收任何参数,该方法会返回一个新字典。
除了字典之外,列表和集合也有 copy() 方法,另请参阅:
提示: 如果需要对字典进行深拷贝(主要针对有嵌套的可变对象),可以使用 copy 模块中的 deepcopy() 函数。
Python copy() 摘要
| 使用频率 | 高 |
|---|---|
| 修改原字典 | 否 |
| 官方文档 | 查看 |
| 相关方法 | copy.deepcopy() |
Python copy() 示例
想要复制一个字典,初学小伙伴很容易想到使用 “=” 来实现,比如下面例子。
示例 1:使用 “=” 复制字典
old = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
# 复制字典
new = old
# 修改 new 第 1 个键
new['Jack'] = 6666
print(old)
print(new)运行结果如下。
{'Jack': 6666, 'Lucy': 1002, 'Tony': 1003}
{'Jack': 6666, 'Lucy': 1002, 'Tony': 1003}分析:
使用 “=” 复制字典,新字典和旧字典指向的是同一个对象。此时修改任何一个字典的键值对,另一个字典的键值对也会跟着一起修改。
示例 2:使用 copy() 复制字典
old = {'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
new = old.copy()
new['Jack'] = 6666
print(old)
print(new)运行结果如下。
{'Jack': 1001, 'Lucy': 1002, 'Tony': 1003}
{'Jack': 6666, 'Lucy': 1002, 'Tony': 1003}Python copy() 注意事项
copy() 方法实现的是浅拷贝,而不是深拷贝。
示例 3:copy() 实现的是浅拷贝
old = {'Jack': 1001, 'Lucy': 1002, 'Tony': {'age': 18, 'grade': 100}}
new = old.copy()
new['Tony']['grade'] = 60
print(old)
print(new)运行结果如下。
{'Jack': 1001, 'Lucy': 1002, 'Tony': {'age': 18, 'grade': 60}}
{'Jack': 1001, 'Lucy': 1002, 'Tony': {'age': 18, 'grade': 60}}分析:
从结果可以看到,如果字典中的值是一个引用类型(如嵌套的字典或列表)。那么修改该嵌套对象内部的元素后,另一个字典对应的嵌套对象也会同步改变,因为它们共享同一个内存引用。
