Python – 字典复制



复制字典

在 Python 中复制字典是指创建一个新的字典,其中包含与原始字典相同的键值对。

我们可以使用多种方法复制字典,具体取决于需求和字典值的性质(它们是可变的还是不可变的,是嵌套的还是非嵌套的)。

浅拷贝

执行浅拷贝时,会创建一个新的字典对象,但它包含对原始字典引用的相同对象的引用。

当您想要复制字典的结构而不复制其包含的嵌套对象时,这很有用。

这可以使用 copy() 方法或 dict() 函数完成,如下所示:

示例:使用 copy() 方法

在下面的示例中,我们可以看到更改浅拷贝中的“age”不会影响原始字典。

但是,修改浅拷贝中的列表也会影响原始字典,因为列表是可变对象,并且只复制了引用。

Open Compiler
original_dict = {"name": "Alice", "age": 25, "skills": ["Python", "Data Science"]} shallow_copy = original_dict.copy() # Modifying the shallow copy shallow_copy["age"] = 26 shallow_copy["skills"].append("Machine Learning") print("Original dictionary:", original_dict) print("Shallow copy:", shallow_copy)

以上代码的输出如下:

Original dictionary: {'name': 'Alice', 'age': 25, 'skills': ['Python', 'Data Science', 'Machine Learning']}
Shallow copy: {'name': 'Alice', 'age': 26, 'skills': ['Python', 'Data Science', 'Machine Learning']}

示例:使用 dict() 方法

与 copy() 方法类似,dict() 方法 创建一个浅拷贝,如下例所示:

Open Compiler
original_dict = {"name": "Bob", "age": 30, "skills": ["Java", "C++"]} shallow_copy = dict(original_dict) # Modifying the shallow copy shallow_copy["age"] = 31 shallow_copy["skills"].append("C#") print("Original dictionary:", original_dict) print("Shallow copy:", shallow_copy)

以上代码的输出如下:

Original dictionary: {'name': 'Bob', 'age': 30, 'skills': ['Java', 'C++', 'C#']}
Shallow copy: {'name': 'Bob', 'age': 31, 'skills': ['Java', 'C++', 'C#']}

Learn Python in-depth with real-world projects through our Python certification course. Enroll and become a certified expert to boost your career.

深拷贝

深拷贝创建一个新的字典,并递归地复制原始字典中找到的所有对象。这意味着不仅字典本身,而且它包含的所有对象(包括嵌套字典、列表等)都会被复制。结果,对深拷贝所做的更改不会影响原始字典,反之亦然。

我们可以使用 copy 模块中的 deepcopy() 函数实现这一点。

示例

在下面的示例中,我们可以看到深拷贝中的“age”值已更改,“skills”列表在深拷贝中已修改(添加了一个项目),并且深拷贝中的“education”字典已修改,所有这些都不会影响原始字典:

Open Compiler
import copy original_dict = { "name": "Alice", "age": 25, "skills": ["Python", "Data Science"], "education": { "degree": "Bachelor's", "field": "Computer Science" } } # Creating a deep copy deep_copy = copy.deepcopy(original_dict) # Modifying the deep copy deep_copy["age"] = 26 deep_copy["skills"].append("Machine Learning") deep_copy["education"]["degree"] = "Master's" # Retrieving both dictionaries print("Original dictionary:", original_dict) print("Deep copy:", deep_copy)

这将产生以下输出:

Original dictionary: {'name': 'Alice', 'age': 25, 'skills': ['Python', 'Data Science'], 'education': {'degree': "Bachelor's", 'field': 'Computer Science'}}
Deep copy: {'name': 'Alice', 'age': 26, 'skills': ['Python', 'Data Science', 'Machine Learning'], 'education': {'degree': "Master's", 'field': 'Computer Science'}}

使用 copy() 方法复制字典

不能直接使用赋值运算符 (=) 复制字典,可以使用copy() 方法创建字典的浅拷贝

语法

以下是 Python 中 copy() 方法的基本语法:

new_dict = original_dict.copy()

其中,original_dict 是您要复制的字典。

示例

以下示例演示了使用 copy() 方法创建字典的浅拷贝:

Open Compiler
# Creating a dictionary dict1 = {"name": "Krishna", "age": "27", "doy": 1992} # Copying the dictionary dict2 = dict1.copy() # Printing both of the dictionaries print("dict1 :", dict1) print("dict2 :", dict2)

输出

我们将得到如下所示的输出:

dict1 : {'name': 'Krishna', 'age': '27', 'doy': 1992}
dict2 : {'name': 'Krishna', 'age': '27', 'doy': 1992}
广告