- Python 3.8从零开始学
- 刘宇宙 刘艳编著
- 525字
- 2022-07-27 19:36:37
5.3.7 copy()方法
copy()方法用于返回一个具有相同键值对的新字典,copy()方法的语法格式如下:
dict.copy()
此语法中,dict代表指定字典,该方法不需要参数。该方法的返回结果为一个字典的浅复制(shallow copy)。
该方法的使用示例如下:
>>> student={'小萌': '000', '小智': '001', '小强': '002','小张': '003'} >>> st=student.copy() >>> print(f'复制student后得到的st为:{st}') 复制student后得到的st为:{'小萌': '000', '小智': '001', '小强': '002', '小张': '003'}
由输出结果可以看到,使用copy()方法可以将一个字典变量复制给另一个变量。
接下来,通过下面的示例介绍什么是浅复制。
>>> student={'小智': '001', 'info':['小张','003','man']} >>> st=student.copy() >>> st['小智']='1005' >>> print(f'更改copy后的st为:{st}') 更改copy后的st为:{'小智': '1005', 'info': ['小张', '003', 'man']} >>> print(f'原字符串为:{student}') 原字符串为:{'小智': '001', 'info': ['小张', '003', 'man']} >>> st['info'].remove('man') >>> print(f'变量st中删除man后,st变为:{st}') 变量st中删除man后,st变为:{'小智': '1005', 'info': ['小张', '003']} >>> print(f'删除后student为:{student}') 删除后student为:{'小智': '001', 'info': ['小张', '003']}
由输出结果可以看到,替换副本的值时原始字典不受影响。如果修改了某个值(原地修改,不是替换),原始字典就会改变,因为同样的值也在原字典中。以这种方式进行复制就是浅复制,而使用深复制(deep copy)可以避免该问题,此处不进行讲解,感兴趣的读者可以自己查找相关资料。
在实际项目应用中,copy()方法的使用不多。当然,在用到copy()可以实现的功能时,要毫不犹豫地使用copy()方法。