详解Python字典、集合和深浅拷贝

2023-12-19

什么是字典?

字典 Python内置的数据结构之一,与列表一样是一个可变序列 以键值对的方式存储数据,字典是一个无序的序列。

字典的实现原理与查字典类似,查字典是先根据部首或拼音查找汉字对应的页码,Python中的字典是根据key查找value所在的位置。

info = {"name":"薛定谔的猫", "age":25}  
print(info)  
print(info.get("height"))  
  
# info2 = dict(name="cat", age=26)  
# print(info2)  
  
# print("name2" in info)  
  
info["height"] = 182  
print(info)  
  
del info["height"]  
print(info)  
  
print(info.keys())  
print(info.values())  
print(info.items())  
  
for i in info.items():  
    print(i)

1. 字典中的所有元素都是一个 key-value对,key不允许重复, value可以重复

2. 字典中的元素是无序的

3. 字典中的 key必须是不可变对象

4. 字典也可以根据需要动态地伸缩

5. 字典会浪费较大的内存,是一种使用 空间换时间 的数据结构。

字典生成式

items = ["Fruits", "Books", "Others"]  
prices = [80, 90, 100, 110, 120]  
  
d = zip(items, prices)  
print(list(d))  
  
d = {item.upper():price for item,price in zip(items,prices)}  
print(d)

什么是集合?

集合是Python语言提供的内置数据结构,与列表、字典一样都属于可变类型的序列, 集合是没有value的字典

集合相关操作:

集合元素的判断操作:in或not in

集合元素的新增操作:

1. 调用add()方法,一次添加一个元素

2. 调用update()方法至少添加一个元素

集合元素的删除操作:

1. 调用remove()方法,一次删除一个指定元素,如果指定的元素不存在抛出KeyError

2. 调用discard()方法,一次删除一个指定元素,如果指定的元素不存在不抛异常

3. 调用pop()方法,一次只删除一个任意元素

4. 调用clear()方法,清空集合

s = {2, 3, 4, 5, 5, 6, 6, 6, 7, 7, 7, 7}  
print(s)  
  
s1 = set(range(6))  
print(s1, type(s1))  
  
s2 = set([1, 2, 3, 4, 8 ,9])  
print(s2, type(s2))  
  
s3 = set('python')  
print(s3, type(s3))  
  
s4 = set()  
s4.add(10)  
print(s4)  
  
s4.update([90, 100, 20, 30, 40])  
print(s4)  
  
s4.pop()  
print(s4)  
  
s4.pop()  
print(s4)

集合间的关系

两个集合是否相等 :可以使用运算符==或!=进行判断

一个集合是否是另一个集合的子集:issubset

一个集合是否是另一个集合的超集:issuperset

两个集合是否没有交集:isdisjoint

s = {10, 20, 30, 40}  
s2 = {30, 40, 50, 60}  
# print(s.issubset(s2))  
# print(s2.issuperset(s))  
  
print(s.intersection(s2))  
print(s & s2)  
  
print(s.union(s2))  
print(s | s2)  
  
print(s.difference(s2))  
print(s - s2)  
  
print(s.symmetric_difference(s2))  
print(s ^ s2)  
  
s = {i * i for i in range(1, 6)}  
print(s)

深浅拷贝

  • **直接赋值:**其实就是对象的引用(别名)。

  • **浅拷贝(copy):**拷贝父对象,不会拷贝对象的内部的子对象。

  • 深拷贝(deepcopy): copy 模块的 deepcopy 方法,完全拷贝了父对象及其子对象。

1、 b = a: 赋值引用,a 和 b 都指向同一个对象。

2、b = a.copy(): 浅拷贝, a 和 b 是一个独立的对象,但他们的子对象还是指向统一对象(是引用)。

b = copy.deepcopy(a): 深度拷贝, a 和 b 完全拷贝了父对象及其子对象,两者是完全独立的。

import copy  
  
li1 = [1, 2, 3]  
li2 = copy.copy(li1)  
li1[0] = "hello"  
print(li1, id(li1))  
print(li2, id(li2))  
  
li3 = [[11, 22, 33], [44, 55, 66]]  
li4 = copy.copy(li3)  
li3[0][0] = 99  
print(li3, id(li3))  
print(li4, id(li4))  
  
li5 = [[11, 22, 33], [44, 55, 66]]  
li6 = copy.deepcopy(li5)  
li6[0][0] = 88  
print(li5, id(li5))  
print(li6, id(li6))

=

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

详解Python字典、集合和深浅拷贝 的相关文章

  • Python Django-如何从输入文件标签读取文件?

    我不想将文件保存在我的服务器上 我只想在下一页中读取并打印该文件 现在我有这个 index html
  • Pandas 堆积条形图中元素的排序

    我正在尝试绘制有关某个地区 5 个地区的家庭在特定行业赚取的收入比例的信息 我使用 groupby 按地区对数据框中的信息进行排序 df df orig groupby District Portion of income value co
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • Rails Windows Vagrant 响应时间非常慢

    我在跑 Vagrant 1 7 1 Rails 4 1 4 Thin 1 6 1 Windows 7 每个静态文件的发送时间都超过一秒 在我的 PC 上加载一个页面可能需要大约 20 秒 而在同事的 Linux 机器上则只需瞬间 有一些帖子
  • Java:如何为山区时间创建 TimeZone 对象?

    必须不禁用夏令时 嗯 在这个清单 http en wikipedia org wiki List of tz database time zones在 zoneinfo 时区名称中 有很多声称是 山地时间 找到最适合您想要的那个 然后使用它
  • 为什么我应该使用 WSGI?

    使用 mod python 一段时间了 我读了越来越多关于 WSGI 有多好的文章 但没有真正理解为什么 那么我为什么要切换到它呢 有什么好处 这很难吗 学习曲线值得吗 为了用 Python 开发复杂的 Web 应用程序 您可能会使用更全面
  • Freemarker 和 Struts 2,有时它计算为序列+扩展哈希

    首先我要说的是 使用 Struts2 Freemarker 真是太棒了 然而有些事情让我发疯 因为我不明白为什么会发生这种情况 我在这里问是因为也许其他人有一个想法可以分享 我有一个动作 有一个属性 说 private String myT
  • 流中的非终结符 forEach() ?

    有时 在处理 Java Stream 时 我发现自己需要一个非终端 forEach 来触发副作用但不终止处理 我怀疑我可以用 map item gt f item 之类的方法来做到这一点 其中方法 f 执行副作用并将项目返回到流中 但这似乎
  • 在Windows 7上安装curl后缺少libcurl-4.dll

    按照这个人的安装curl后指示 https stackoverflow com a 28757477 1186038 除了第 2 步 已安装Win64 OpenSSL v1 0 1u 轻型相反 因为下载页面中缺少版本 k http slpr
  • 在 Spyder 的变量资源管理器中查看局部变量

    我是 python 新手 正在使用 Spyder 的 IDE 我欣赏它的一项功能是它的变量资源管理器 然而 根据一些研究 我发现它只显示全局变量 我找到的解决方法是使用检查模块 import inspect local vars def m
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • Flask 应用程序的测试覆盖率不起作用

    您好 想在终端的 Flask 应用程序中测试 删除路由 我可以看到测试已经过去 它说 test user delete test app LayoutTestCase ok 但是当我打开封面时 它仍然是红色的 这意味着没有覆盖它 请有人向我
  • 从列表python的单个列表中删除子列表

    我已经经历过从列表列表中删除子列表 https stackoverflow com questions 47209786 removing sublists from a list of lists 但当我为我的数据集扩展它时 它不适用于我
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • Android:无法发送http post

    我一直在绞尽脑汁试图弄清楚如何在 Android 中发送 post 方法 这就是我的代码的样子 public class HomeActivity extends Activity implements OnClickListener pr
  • 计算互相关函数?

    In R 我在用ccf or acf计算成对互相关函数 以便我可以找出哪个移位给我带来最大值 从它的外观来看 R给我一个标准化的值序列 Python 的 scipy 中是否有类似的东西 或者我应该使用fft模块 目前 我正在这样做 xcor
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • [cocos2d-x]当我尝试在 Windows 10 中运行“python android-build.py -p 19 cpp-tests”时出现错误

    当我尝试运行命令时python android build p cpp tests 我收到如图所示的错误 在此之前 我收到了另一条关于 Android SDK Tools 版本兼容性的错误消息 所以 我只是将 sdk 版本从 26 0 0
  • python 中的 after() 与 update()

    我是 python 新手 开始使用 tkinter 作为画布 到目前为止 我使用 update 来更新我的画布 但还有一个 after 方法 谁能给我解释一下这个函数 请举个例子 两者之间有什么区别 root after integer c
  • 如何创建向后兼容 Windows 7 的缩放和尺寸更改每显示器 DPI 感知应用程序?

    我是 WPF 和 DPI 感知 API 的新手 正在编写一个在 Windows 7 8 1 和 10 中运行的应用程序 我使用具有不同每个显示器 DPI 设置的多个显示器 并且有兴趣将我的应用程序制作为跨桌面配置尽可能兼容 我已经知道可以将

随机推荐

  • AI绘画生成器让你秒变画神,输入文字就能生成精美图片的AI绘画功能,AI绘画软件推荐

    在当今这个数字化时代 图片编辑已经成为我们日常生活和工作中的一项重要任务 无论是社交媒体上的个人展示 还是商业广告中的产品推广 精美的图片总能吸引更多的关注和赞誉 为了满足广大用户对图片编辑的需求 我们推出了一款全新的软件 首助编辑高手 1
  • CCF编程能力等级认证GESP—C++4级—20230923

    CCF编程能力等级认证GESP C 4级 20230923 单选题 每题 2 分 共 30 分 判断题 每题 2 分 共 20 分 编程题 每题 25 分 共 50 分 进制转换 变长编码 答案及解析 单选题
  • 数据结构学习笔记(七)搜索结构

    文章目录 1 前言 2 概念 3 静态搜索结构 3 1 静态搜索表 3 2 顺序搜索表 3 2 1 基于有序顺序表和顺序搜索和折半搜索 4 二叉搜索树
  • 吴恩达机器学习笔记八 正则化

    使第一项均方差较小来符合数据 使第二项正则化项较小来使 w 较小 0 采用高阶多项式会过拟合 非常大 则每个 w 都很小 F X 约为 b 结果为一条直线 欠拟合 含正则化线性回归的梯度下降 含正则化逻辑回归的梯度下降 到这里第一个专项课程
  • Lazada商品详情API在电商中的价值及实时数据获取实践

    一 引言 在电商行业 数据是驱动业务增长的关键 Lazada作为东南亚地区知名的电商平台 其商品详情API对于电商行业具有深远的影响 本文将探讨Lazada商品详情API在电商行业中的重要性 并介绍如何实现实时数据获取 二 Lazada商品
  • sourcetree 无效的源路径 细节提示:系统找不到指定的文件

    工具 gt 选项 gt git 直接下拉到底 点击红框 重新下载一个内嵌git就可以了 我感觉是因为改变了原有git安装路径的问题
  • 基于ssm的校园闲置物品交易平台

    收藏关注不迷路 源码文章末 文章目录 前言 一 项目介绍 二 开发环境 三 功能介绍 四 核心代码 五 效果图 六 文章目录 前言 互联网日益成熟 走进千家万户 改变多个行业传统的工作方式 校园闲置物品交易管理以校园闲置物品交易和用户需求为
  • 如何编写产品需求文档(PRD)?「附模板」

    在数字化时代的快速变革中 产品开发不再是一个单向的 线性的过程 它涉及多方面的互动 多维度的考量 以及多个利益相关者的参与 那么 如何确保每个人都对产品的最终形态有一个清晰 一致的理解 如何确保每个人都在为同一个目标努力 产品需求文档就在产
  • Python爬坑指北:大神不会告诉你的优化小技巧

    Python是一种优美的编程语言 简洁 易读 非常适合快速原型设计 然而 随着代码库的增长 性能问题的风险也在增加 低效的Python代码可能会令人沮丧地缓慢 而且通常很难找到瓶颈所在 但是不用担心 在这篇文章中 我们将探讨一些优化Pyth
  • ArkTS 状态管理@Prop、@Link

    当父子组件之间需要数据同步的时候 可以使用 Prop和 Link装饰器 实现的案例之中 代码时平铺直叙的 阅读性可理解性比较差 我们应改遵循组件化开发的思想 在我们使用组件开发的时候 遇到数据同步问题的时候 State状态是解决不了的 所以
  • 母猪智慧养殖VR虚拟互动教学给予学生充分的自主性和创新-深圳华锐视点

    为了保障养殖场生物安全 避免疫情传播 学生开展育肥猪养殖培训 多以参观为主 在一对多的模式下被动了解生产过程 解决实训难的问题 基于元宇宙平台进行育肥猪养殖实训 开启新时代养殖培训领域的新篇章 基于元宇宙进行育肥猪养殖实训 学生可以通过软件
  • 电商平台API接口接入|实战:​获取商品列表接口测试用例举例python

    1 登录获 取商品列表的简单接口 定义 定义已经登陆获取商品列表的接口 包括商品的图片 标题 详情 价格 评论和推荐等
  • Spectre && Meltdown漏洞

    文章目录 前言 一 原理 1 1 旁路 Side Channel 1 2 缓冲时延 Cache Timing 二 利用方法 2 1 Meldown攻击 2 2 Spectre攻击
  • 基于ssm的足球联赛管理系统

    收藏关注不迷路 源码文章末 文章目录 前言 一 项目介绍 二 开发环境 三 功能介绍 四 核心代码 五 效果图 六 文章目录 前言 系统阐述的是使用足球联赛管理系统的设计与实现 对于Java B S结构 MySql进行了较为深入的学习与应用
  • 编程语言选择大揭秘:为什么Python比C++更适合初学者?

    今天带大家一起梳理下到底如何选择 首先 我们一起认识下Python Python 简介 1991 年 Guido van Rossum 创建了 Python 编程语言 Python 是一种通用编程语言 强调可读性是 Python 编程语言区
  • Sui限定版冬季任务来袭,100万份礼物和50万SUI在等你!

    在这个渐趋寒冷但节日氛围却日渐浓厚的冬日 Mysten Labs非常高兴地向大家宣布 限定版冬季任务已于北京时间12月19日凌晨3点正式启动啦 这次冒险任务充满刺激 奖励丰厚 快来 Mysten Labs任务网站 体验吧 对于参加过Ques
  • IMU用于上肢功能评估

    来自日本团队牵头研究揭示了利用九轴运动传感器评估上肢Fugl Meyer FMA 的潜力 该探索侧重于将惯性测量单元 IMU 集成到 FMA 的方法中 并探究是否可以出现标准化和更客观的测量 从而解决动态运动评估中的一个紧迫问题 九轴 IM
  • 网络安全中的POC、EXP、Payload、ShellCode_网络安全payload是什么意思

    什么是 POC EXP Payload POC 概念证明 即概念验证 英语 Proof of concept 简称POC 是对某些想法的一个较短而不完整的实现 以证明其可行性 示范其原理 其目的是为了验证一些概念或理论 在计算机安全术语中
  • Vue2 即将结束支持!!!

    Vue2 Vue 2 0 发布于 2016 年 已经有超过 7 年的历史 它是 Vue 框架成为主流的重要里程碑 许多当前的 Vue 用户都是在 Vue 2 时期就开始使用 Vue 的 并且有许多出色的项目是基于 Vue 2 构建的 Vue
  • 详解Python字典、集合和深浅拷贝

    什么是字典 字典 Python内置的数据结构之一 与列表一样是一个可变序列 以键值对的方式存储数据 字典是一个无序的序列 字典的实现原理与查字典类似 查字典是先根据部首或拼音查找汉字对应的页码 Python中的字典是根据key查找value