有些时候我们需要用到字典的拷贝,比如:

dict_01 = {"name": "张三", "age": 20}

我们想要创建一个dict_02,使得其值和dict_01相等,并且在改变dict_02的时候不影响dict_01

若直接相等,相当于dict_02变成了dict_01的引用,改变dict_02的时候dict_01的值也会随之变化

dict_01 = {"name": "张三", "age": 20}
dict_02 = dict_01
print("dict_02:", dict_02)
print("dict_01:", dict_01)
dict_02["name"] = "李四"
print("dict_02:", dict_02)
print("dict_01:", dict_01)
print("dict_01的引用:", id(dict_01))
print("dict_02的引用:", id(dict_02))

输出>>

dict_02: {'name': '张三', 'age': 20}
dict_01: {'name': '张三', 'age': 20}
dict_02: {'name': '李四', 'age': 20}
dict_01: {'name': '李四', 'age': 20}
dict_01的引用: 4371788224
dict_02的引用: 4371788224

这里,我们可以用到字典的copy()方法,实现我们的需求:

dict_01 = {"name": "张三", "age": 20}
dict_02 = dict_01.copy()
print("dict_02:", dict_02)
print("dict_01:", dict_01)
dict_02["name"] = "李四"
print("dict_02:", dict_02)
print("dict_01:", dict_01)
print("dict_01的引用:", id(dict_01))
print("dict_02的引用:", id(dict_02))

输出>>

dict_02: {'name': '张三', 'age': 20}
dict_01: {'name': '张三', 'age': 20}
dict_02: {'name': '李四', 'age': 20}
dict_01: {'name': '张三', 'age': 20}
dict_01的引用: 4310921664
dict_02的引用: 4310921728

也可以用内置函数dict()实现:

dict_01 = {"name": "张三", "age": 20}
dict_02 = dict(dict_01)
print("dict_02:", dict_02)
print("dict_01:", dict_01)
dict_02["name"] = "李四"
print("dict_02:", dict_02)
print("dict_01:", dict_01)
print("dict_01的引用:", id(dict_01))
print("dict_02的引用:", id(dict_02))

输出>>

dict_02: {'name': '张三', 'age': 20}
dict_01: {'name': '张三', 'age': 20}
dict_02: {'name': '李四', 'age': 20}
dict_01: {'name': '张三', 'age': 20}
dict_01的引用: 4302451136
dict_02的引用: 4303857856

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐