Python 字典 copy() 方法

Python copy() 语法

copy() 是 Python 字典的一个方法,它用于浅复制(拷贝)一个字典。新字典与原字典相互独立,但嵌套对象仍共享引用。

语法:

dict.copy()

说明:

copy() 方法不接收任何参数,该方法会返回一个新字典。

除了字典之外,列表和集合也有 copy() 方法,另请参阅:

Python 列表 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}}

分析:

从结果可以看到,如果字典中的值是一个引用类型(如嵌套的字典或列表)。那么修改该嵌套对象内部的元素后,另一个字典对应的嵌套对象也会同步改变,因为它们共享同一个内存引用。

上一篇: setdefault()

下一篇: clear()

给站长反馈

绿叶网正在不断完善中,小伙伴们如果发现任何问题,还望多多给站长反馈,谢谢!

邮箱:lvyenet@vip.qq.com

「绿叶网」服务号
绿叶网服务号放大
关注服务号,微信也能看教程。
绿叶网服务号