Python学习日记之字典深复制与浅复制

Python中通过copy模块有两种复制(深复制与浅复制)

  1. copy 浅复制 复制时只会复制父对象,而不会复制对象的内部的子对象。
  2. deepcopy 深复制 复制对象及其子对象

因此,复制后对原dict的内部的子对象(方括号[]内元素)进行操作时,浅复制dict操作影响而变化,而深复制dict则不会受操作变化

而使用del 对父对象进行操作时,浅复制,深复制后的副本为全新副本,不受影响

 1 #!/usr/bin/env python3
 2 # -*- coding:utf-8 -*-
 3 
 4 from copy import deepcopy
 5 adict={'姓名':'Tom','性别':['','']}
 6 bdict=adict.copy()     #浅复制(浅拷贝)
 7 cdict=deepcopy(adict)        #深复制(深拷贝)
 8 def travel(dict):
 9     for key,value in dict.items():
10         print('%s : %s'%(key,value))
11 
12 print('进行删除操作')
13 adict['性别'].remove('')
14 travel(adict)
15 print('copy浅复制(浅拷贝)')
16 travel(bdict)
17 print('deepcopy深复制(深拷贝)')
18 travel(cdict)

输出结果:

 


结论:使用copy方式进行的是浅复制,故对原adict或浅复制结果bdict的子对象的操作,是等同的,且不会对深复制cdict产生影响。

对深复制cdict的操作不会对原adict有影响


扩展(深复制与浅复制对比)

     浅复制:copy  , [ : ],set,list...

     深复制:deepcopy


开发环境: python3

原文地址:https://www.cnblogs.com/mokero/p/6662202.html