面试题答案
一键面试1. 对字典进行浅拷贝的代码示例
在Python中,可以使用dict.copy()
方法或者copy.copy()
函数来进行浅拷贝。以下是示例代码:
import copy
original_dict = {
'a': 1,
'b': {'sub_key':'sub_value'}
}
# 使用 dict.copy() 方法
shallow_copied_dict1 = original_dict.copy()
# 使用 copy.copy() 函数
shallow_copied_dict2 = copy.copy(original_dict)
print(shallow_copied_dict1)
print(shallow_copied_dict2)
2. 浅拷贝后原字典和新字典在嵌套结构修改时的情况
浅拷贝只会复制字典的第一层,对于嵌套的可变对象(如字典、列表等),新字典和原字典会共享这些嵌套对象的引用。当修改嵌套结构时,原字典和浅拷贝后的新字典都会受到影响。示例如下:
import copy
original_dict = {
'a': 1,
'b': {'sub_key':'sub_value'}
}
shallow_copied_dict = original_dict.copy()
# 修改浅拷贝字典的嵌套字典
shallow_copied_dict['b']['sub_key'] = 'new_sub_value'
print(original_dict)
print(shallow_copied_dict)
上述代码中,修改shallow_copied_dict
中嵌套字典'b'
的值,original_dict
中对应的嵌套字典值也会改变,因为它们共享这个嵌套字典的引用。但如果修改顶层字典的非嵌套部分,如original_dict['a'] = 2
,则shallow_copied_dict
中的'a'
值不会改变。