1. 程式人生 > >python 字典深復制和淺復制

python 字典深復制和淺復制

python 淺復制 root 進行 deep 打印 use 也會 odin

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

import copy
dict1 = {‘user‘: ‘vickey‘, ‘num‘: [1, 2, 3],‘age‘:{‘a‘:‘1‘,‘b‘:‘2‘}}
dict2 = dict1 # 對原始數據的任何操作都會影響該復制
# 先進行數據的淺復制和深復制操作
dict3 = dict1.copy() # 淺復制: 一級為引用對象,二級為拷貝;原始數據的二級目錄改變了,淺復制的數據的二級目錄也會改變,但一級目錄不變
dict4 = copy.deepcopy(dict1) # 深復制:深拷貝父對象(一級目錄),子對象(二級目錄)是引用,非拷貝;簡單地說就是與最原始的的數據時完全一致的
# 修改 data 數據
dict1[‘user‘] = ‘root‘
dict1[‘num‘].remove(3)
dict1[‘num‘].append(6)
dict1[‘age‘][‘a‘] = ‘111‘
# 對數據操作後再復制,則深復制和淺復制無差別了,都是更改後的數據
# dict3 = dict1.copy()
# dict4 = copy.deepcopy(dict1)
# 輸出結果
print(dict1)
print(dict2)
print(dict3)
print(dict4)


打印結果

{‘age‘: {‘a‘: ‘111‘, ‘b‘: ‘2‘}, ‘num‘: [1, 2, 6], ‘user‘: ‘root‘}
{‘age‘: {‘a‘: ‘111‘, ‘b‘: ‘2‘}, ‘num‘: [1, 2, 6], ‘user‘: ‘root‘}
{‘age‘: {‘a‘: ‘111‘, ‘b‘: ‘2‘}, ‘num‘: [1, 2, 6], ‘user‘: ‘vickey‘}
{‘age‘: {‘a‘: ‘1‘, ‘b‘: ‘2‘}, ‘num‘: [1, 2, 3], ‘user‘: ‘vickey‘}

python 字典深復制和淺復制