Python中针对dict字典有两种复制:

(1)浅复制:利用 copy() 或者 dict() ;复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由浅复制得到的dict受该操作影响

(2)深复制:利用 deepcopy() ;复制后对原dict的内部子对象(方括号[]内元素)进行操作时,由深复制得到的dict不会受该操作影响

from copy import deepcopy

def test():
d1 = {"a": {"keys": [1, 2, 3]}, 'b': {"keys": [4, 5, 6]}}
d2 = d1.copy() # 浅复制
d3 = dict(d1) # 浅复制
d4 = deepcopy(d1) # 深复制
print("d1=%s \nd2=%s \nd3=%s \nd4=%s" % (d1, d2, d3, d4))
d1["a"]["keys"] = [1, 2] # 修改d1的值
print("d1 modified.")
print("d1=%s \nd2=%s \nd3=%s \nd4=%s" % (d1, d2, d3, d4)) """
输出结果:
d1={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
d2={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
d3={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
d4={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
d1 modified.
d1={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}}
d2={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}}
d3={'a': {'keys': [1, 2]}, 'b': {'keys': [4, 5, 6]}}
d4={'a': {'keys': [1, 2, 3]}, 'b': {'keys': [4, 5, 6]}}
"""

[Python] dict字典的浅复制与深复制的更多相关文章

  1. Python赋值、浅复制和深复制

    Python赋值.浅复制和深复制 ​ 首先我们需要知道赋值和浅复制的区别: 赋值和浅复制的区别 赋值,当一个对象赋值给另一个新的变量时,赋的其实是该对象在栈中的地址,该地址指向堆中的数据.即赋值后,两 ...

  2. Python中的浅复制、深复制

    参考 https://docs.python.org/3/library/copy.html?highlight=copy%20copy#copy.copy https://en.wikipedia. ...

  3. iOS 浅复制和深复制的深层理解,含示例

    转载:https://www.zybuluo.com/MicroCai/note/50592 版权归 @MicroCai 所有 以下是正文: 浅复制就是指针拷贝:深复制就是内容拷贝. 集合的浅复制 ( ...

  4. java基础-浅复制与深复制的理解

    浅复制与深复制在很多编程语言中都有出现,那么什么是浅复制,什么是深复制呢? 要区分浅复制与深复制,首先我们要明确什么是复制,怎样才算是复制.复制的例子在生活中也随处可见,如复印一份文档,复制一段文字等 ...

  5. iOS 浅复制、深复制、完全复制的知识点梳理验证(附加归档解档)

    在之前转载的一片文章中,文中对浅复制和深复制进行了详细的解读,同时还提到了深复制(one-level-deep copy).完全复制(true copy)的概念,并指出iOS开发中的深复制是单层深赋值 ...

  6. 深度解析javascript中的浅复制和深复制

    原文:深度解析javascript中的浅复制和深复制 在谈javascript的浅复制和深复制之前,我们有必要在来讨论下js的数据类型.我们都知道有Number,Boolean,String,Null ...

  7. JAVA中浅复制与深复制 - coolmist - ITeye技术网站

    body{ font-family: "Microsoft YaHei UI","Microsoft YaHei",SimSun,"Segoe UI& ...

  8. Java中引用的浅复制和深复制

    Java中除了基本类型int,char,double等的赋值是按照值传递之外,其余的类型和对象都是按照引用进行传递的. 下面来看一个关于引用的例子. package referenceCopy;// ...

  9. js中的浅复制和深复制

    浅复制:浅复制是复制引用,复制后的引用都是指向同一个对象的实例,彼此之间的操作会互相影响 深复制:深复制不是简单的复制引用,而是在堆中重新分配内存,并且把源对象实例的所有属性都进行新建复制,以保证深复 ...

随机推荐

  1. linux下挂载ISO像镜文件

    挂载命令(mount) 命令格式:mount [-t vfstype] [-o options] device dir其中:1.-t vfstype 指定文件系统的类型,通常不必指定.mount 会自 ...

  2. LeetCode——Longest Palindromic Subsequence

    1. Question Given a string s, find the longest palindromic subsequence's length in s. You may assume ...

  3. UVA 1213 Sum of Different Primes(经典dp)

    题意:选择k(k<15)个唯一质数,求出和为n(n<1121)的可能数 题解:预处理dp,dp[k][n]表示使用k个素数拼成n的总方案数 就是三重枚举,枚举k,枚举n,枚举小于n的素数 ...

  4. 【卷积神经网络】对BN层的解释

    前言 Batch Normalization是由google提出的一种训练优化方法.参考论文:Batch Normalization Accelerating Deep Network Trainin ...

  5. 2017 ACM-ICPC 亚洲区(南宁赛区)网络赛 A题 Weather Patterns

    2017-09-25 15:49:45 writer:pprp 阅读理解,当时没有耐心去读,只要能读懂就大概可以做出来 题意如下: 有四种天气, State 1: snow State 2: rain ...

  6. u-boot-2015.07 make xxx_config 分析

    1.u-boot编译脚本:mk.sh #! /bin/sh export PATH=$PATH:/opt/ti-sdk-am335x-evm-08.00.00.00/linux-devkit/sysr ...

  7. 【三小时学会Kubernetes!(零) 】系统结构及相关示例微服务介绍

    写在前面 牢牢占据容器技术统治地位的 Kubernetes,其重要性想必不言而喻,我保证本文是最详尽的 Kubernetes 技术文档,从我在后台排版了这么漫长的时间就能看出来.废话不多说 — — 以 ...

  8. 【nginx】一台nginx服务器多域名配置

    Nginx 多域名配置 nginx绑定多个域名可又把多个域名规则写一个配置文件里,也可又分别建立多个域名配置文件,我一般为了管理方便,每个域名建一个文件,有些同类域名也可又写在一个总的配置文件里.一. ...

  9. 英语每日阅读---7、VOA慢速英语(翻译+字幕+讲解):卡梅伦呼吁女性移民学英语

    英语每日阅读---7.VOA慢速英语(翻译+字幕+讲解):卡梅伦呼吁女性移民学英语 一.总结 一句话总结: a.learn English or be deported:British Prime M ...

  10. EasyUI datagrid 多条件查询

    <script type="text/javascript"> $(function () { $("#dg").datagrid({ url: ' ...