python编程比较copy方法与deepcopy方法,教你如何深度复制字典?

简介: python编程比较copy方法与deepcopy方法,教你如何深度复制字典?

本篇文章创作主要是为了让小伙伴们掌握普通字典的赋值、字典的copy复制赋值、deepcopy对字典的复制赋值 这三种不同的复制之间的区别。


一、普通字典的赋值

赋值过程的代码:






ljydic1={'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}print(ljydic1)ljydic2=ljydic1ljydic1["aa"]="老劉"print("ljydic2",ljydic2)

虽然改变了ljydic1的aa键对应的值,但是同时也影响了ljydic2中键aa的值,从这个案例中可以看出,字典赋值,实际上是指针的指向。


二、字典的copy方法

那么如何才能够对值的数据进行复制?


使用字典自带的copy方法。但是注意:这个copy方法只是针对于一级键值对的数据的复制。这个方法对于二级数据及更深层次的数据仍然只是一个指针指向。


三、深度复制字典

使用copy这个库中的deepcopy方法,可以对字典数据进行深度复制。

代码案例:







from copy import deepcopyljydic1={'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}print(ljydic1)ljydic2=deepcopy(ljydic1)ljydic1["cc"][0]="老劉"print("ljydic2",ljydic2)

从这个案例可以看出,想要深度复制字典,只要直接往deepcopy方法中传入原字典即可返回一个新的字典数据。


四、视频程序源代码

为了方便观察,部分功能使用#进行了注释,您可以字形解开注释观察效果。


源代码:

#使用字典的深度複製
from copy import deepcopy
ljydic1={'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}
print(ljydic1)
ljydic2=deepcopy(ljydic1)
ljydic1["cc"][0]="老劉"
print("ljydic2",ljydic2)
# ljydic1={'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}
# print(ljydic1)
# ljydic2=ljydic1.copy()
# ljydic1["cc"][0]="老劉"
# print("ljydic2",ljydic2)
# ljydic1={'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}
# print(ljydic1)
# ljydic2=ljydic1
# ljydic1["aa"]="老劉"
# print("ljydic2",ljydic2)

执行结果:

{'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'}
ljydic2 {'bb': '老张', 'cc': ['小红', '小林'], 'aa': '刘金玉'
相关文章
|
10月前
|
存储 JavaScript Java
(Python基础)新时代语言!一起学习Python吧!(四):dict字典和set类型;切片类型、列表生成式;map和reduce迭代器;filter过滤函数、sorted排序函数;lambda函数
dict字典 Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。 我们可以通过声明JS对象一样的方式声明dict
507 2
|
11月前
|
测试技术 开发者 Python
Python单元测试入门:3个核心断言方法,帮你快速定位代码bug
本文介绍Python单元测试基础,详解`unittest`框架中的三大核心断言方法:`assertEqual`验证值相等,`assertTrue`和`assertFalse`判断条件真假。通过实例演示其用法,帮助开发者自动化检测代码逻辑,提升测试效率与可靠性。
640 1
|
11月前
|
人工智能 数据安全/隐私保护 异构计算
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
1593 8
桌面版exe安装和Python命令行安装2种方法详细讲解图片去水印AI源码私有化部署Lama-Cleaner安装使用方法-优雅草卓伊凡
|
10月前
|
Python
Python编程:运算符详解
本文全面详解Python各类运算符,涵盖算术、比较、逻辑、赋值、位、身份、成员运算符及优先级规则,结合实例代码与运行结果,助你深入掌握Python运算符的使用方法与应用场景。
539 3
|
10月前
|
数据处理 Python
Python编程:类型转换与输入输出
本教程介绍Python中输入输出与类型转换的基础知识,涵盖input()和print()的使用,int()、float()等类型转换方法,并通过综合示例演示数据处理、错误处理及格式化输出,助你掌握核心编程技能。
782 3
|
10月前
|
并行计算 安全 计算机视觉
Python多进程编程:用multiprocessing突破GIL限制
Python中GIL限制多线程性能,尤其在CPU密集型任务中。`multiprocessing`模块通过创建独立进程,绕过GIL,实现真正的并行计算。它支持进程池、队列、管道、共享内存和同步机制,适用于科学计算、图像处理等场景。相比多线程,多进程更适合利用多核优势,虽有较高内存开销,但能显著提升性能。合理使用进程池与通信机制,可最大化效率。
624 3
|
10月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
835 0
|
11月前
|
存储 JSON 数据管理
Python字典:高效数据管理的瑞士军刀
Python字典基于哈希表实现,提供接近O(1)的高效查找,支持增删改查、遍历、合并等丰富操作,广泛应用于计数、缓存、配置管理及JSON处理。其灵活性与性能使其成为数据处理的核心工具。
792 0
|
SQL JSON C语言
Python中字符串的三种定义方法
Python中字符串的三种定义方法
922 2

推荐镜像

更多