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()方法。