1. 程式人生 > >Python 字典 copy()方法

Python 字典 copy()方法

note targe 輸出結果 w3c odin logs bin name 拷貝

描述

Python 字典 copy() 方法返回一個字典的淺拷貝(父不變,子變)。

語法

copy()方法語法:

dict.copy()

參數

  • NA。

返回值

返回一個字典的淺拷貝(父不變,子變)。

實例

以下實例展示了 copy()方法的使用方法:

#!/usr/bin/python3
 
dict1 = {‘Name‘: ‘Runoob‘, ‘Age‘: 7, ‘Class‘: ‘First‘}
 
dict2 = dict1.copy()
print ("新復制的字典為 : ",dict2)

以上實例輸出結果為:

新復制的字典為 :  {‘Age‘: 7, ‘Name‘: ‘Runoob‘, ‘Class‘: ‘First‘}

直接引用、淺拷貝、深拷貝的區別

可以通過以下實例說明:

# !/usr/bin/python
# -*- coding: UTF-8 -*-

import copy

dict1 = {‘user‘: ‘runoob‘, ‘num‘: [1, 2, 3]} # 原始數據
dict2 = dict1  # 直接引用:dict2和dict1整體指向同一對象。
dict3 = dict1.copy()  # 淺拷貝:dict3和dict1的父對象是一個獨立的對象,但是他們的子對象還是指向同一對象。
dict4 = copy.deepcopy(dict1)  # 深拷貝:dict4和dict1的整體是一個獨立的對象。

dict1[‘user‘] = ‘root‘ # 修改父對象dict1
dict1[‘num‘].remove(1) # 修改父對象dict1中的[1, 2, 3]列表子對象

print(‘原始數據:‘,{‘user‘: ‘runoob‘, ‘num‘: [1, 2, 3]}) # 原始數據
print(‘改後數據:‘,dict1) # 父子都修改過的
print(‘直接引用:‘,dict2) # 父子都變(直接引用)
print(‘淺拷貝:‘,dict3) # 父不變,子變(淺拷貝)
print(‘深拷貝:‘,dict4) # 父子都不變(深拷貝)

實例中 dict2 其實是 dict1 的賦值引用(別名),所以輸出結果都是一致的;dict3 是對dict1的淺拷貝,父對象不會隨dict1修改而修改,子對象隨dict1的修改而修改;dict4 是對dict1的深拷貝,父對象和子對象都不會隨dict1修改而修改。

輸出結果如下:

原始數據: {‘user‘: ‘runoob‘, ‘num‘: [1, 2, 3]}
改後數據: {‘user‘: ‘root‘, ‘num‘: [2, 3]}
賦值引用: {‘user‘: ‘root‘, ‘num‘: [2, 3]}
淺拷貝: {‘user‘: ‘runoob‘, ‘num‘: [2, 3]}
深拷貝: {‘user‘: ‘runoob‘, ‘num‘: [1, 2, 3]}

知識擴展

Python 直接賦值、淺拷貝和深度拷貝解析

Python 字典 copy()方法