JJJ:组合数据类型2

文章目录

    • 字典的创建和删除 p50
      • 字典的创建方式
    • 字典元素的访问及遍历 p51
    • 字典操作的相关方法 p52
    • 字典生成式
    • 集合的创建与删除 p54
    • 集合的操作符 p55
    • 集合的操作方法、集合的遍历 p56
      • 列表、元组、字典、集合的区别
    • Python 3.11新特性
      • 结构模型匹配
      • 字典合并运算符 |
      • 同步迭代

字典的创建和删除 p50

字典类型是根据一个信息查找到另一个信息的方式构成了’键值对‘,他表示索引用的键和对应的值构成的对应关系

key — value

字典也是可变数据类型(另一个是列表)

字典中的元素是无序的,底层使用了hash:第一个添加到字典中的元素,在内存中不一定是第一个

键必须唯一,value可以重复
键必须是不可变序列:字符串、整数、浮点、元组 可以作为键,列表不可以做为字典的键

字典的创建方式

1、使用 {} 直接创建字典

d={key1:value1,key2:value2...}

2、使用内置函数dict()创建字典

dict(key1=value1,key2=value2...)

3、使用映射函数创建字典

zip(lst1,lst2)
'''
lst1和lst2都是列表,分别作为key和value
'''

代码实例:

# 字典的创建和删除# (1)创建字典
d={10:'cat',20:'dog',30:'cat'}
print(d)
# 如果key重复,后面key的value会对前面的进行覆盖
d={10:'cat',20:'dog',30:'cat',20:'zoo'}
print(d)
# (2)使用参数创建字典 dict()
d=dict(cat=10,dog=20)
print(d)
# (3)zip函数映射创建
lst1=[10,20,30,40]
lst2=['cat','dog','pet','zoo','car'] # 此处多了一个元素
zipobj=zip(lst1,lst2)
print(zipobj) # <zip object at 0x0000011E60D4CC40>
#print(list(zipobj)) # 转成列表类型,元素是元组类型
print(dict(zipobj)) # 上面那行若不只是,映射对象zipobj已经转成列表类型,不能再转成字典类型了,因为已经没有元素了# 使用整个元组作为键
t=(10,20,30)
print({t:10})
# 列表是不能做键的,没有哈希,可能会报错
# 可变数据类型不能作为字典中的键# 字典属于序列,序列的操作方法同样适用于字典
print('max:',max(d))
print('min:',min(d))
print('len:',len(d))# 字典的删除
del d
print(d) # 删除了之后就不能使用了 执行此句会报错

字典元素的访问及遍历 p51

字典元素的取值:

d[key]
或者
d.get(key)

字典元素的遍历:
1)遍历出key与value的元组

for element in d.items():pass
  1. 分别遍历出key和value
for key,value in d.items():pass

代码实例:

# 字典元素的访问和遍历
d={'hello':10,'world':20,'python':30}# 访问元素
# 二者之间有区别,若键不存在,第一种方法会报错
print(d['hello'])print(d.get('hello'))#print(d['java'])  # 此处会报错,键不存在print(d.get('java')) # 虽然键不存在,但是不会报错,返回 None
print(d.get('java'),'不存在') # 若键不存在,则会输出逗号后面的默认值# 字典的遍历for item in d.items():print(item) # 得到由键和value组成的一个个元组for key,value in d.items():print(key,'-->',value)

字典操作的相关方法 p52

字典的方法描述说明
d.keys()获取所有key数据
d.values()获取所有的value数据
d.pop(key,default)key存在获取相应的value,同时删除key-value对,否则获default默认值
d.popitem()随机从字典取出一个key-value对,结果为元组类型,同时将该key-value从字典中删除
d.clear()清空字典中所有的key-value对

代码实例:


# 字典的相关操作方法
d={1001:'李梅',1002:'王华',1003:'张锋'}
print(d)# 向字典中添加元素
d[1004]='张丽丽'
print(d)keys=d.keys()
print(keys) # dict_keys([1001, 1002, 1003, 1004])
print(list(keys))
print(tuple(keys))values=d.values()
print(values)
print(list(values))
print(tuple(values))# 将字典中的数据转换成键值对的形式,以元组的方式展现
lst=list(d.items())
print(lst) # 列表的形式,元素是一个个元组# 将上面的列表转换成字典
d=dict(lst)
print(d)# pop 取出对应key的value,并删除这个key-value对
print(d.pop(1001))
print(d)# 取一个不存在的key,并返回默认值
print(d.pop(1008,'不存在'))# 随机删除
print(d.popitem())
print(d)# 清空字典中的所有元素
d.clear()
print(d) # 变成空字典了print(bool(d))

字典生成式

d={key:value for item in range}d={key:value for key:value in zip(lst1,lst2)}

代码实例:

import randomd={item:random.randint(1,100) for item in range(4)}
print(d)# 创建两个列表
lst=[1001,1002,1003]
lst2=['a','b','c']
d={key:value for key,value in zip(lst,lst2)}
print(d)

集合的创建与删除 p54

与数学中集合的概念一致

无序的、不重复的元素序列

只能存储不可变数据类型:可以存储字符串、整数、浮点数、元组,不能存储列表、字典

使用{}定义

与列表、字典一样,式可变数据类型

集合的创建方式有两种:

1、使用{}直接创建集合

s={element1,element2,...,elementN}

2、使用内置函数set()创建集合

s=set(可迭代对象)

集合的删除:

del 集合名

代码实例:

# 集合的创建和删除# 使用{}直接创建集合
s={10,20,30}
print(s)
# 集合中只能存储不可变数据类型
# 列表,字典,集合式可变数据类型,因此不能作为集合的元素
# s={[10,20],[30,40]}
# print(s) # 此处会报错# 使用set()去创建集合
s=set() # 没有参数,直接创建一个空集合
print(s) # set()s={} # 直接使用花括号,创建的不是集合,是字典
print(s,type(s))s=set('helloworld')
print(s) # 顺序被打乱,不会有重复的元素s2=set([10,20,30])
print(s2)s3=set(range(1,10))
print(s3)# 序列的通用操作
print('max:',max(s3))
print('min:',min(s3))
print('len:',len(s3))
print('9存在于集合吗?',9 in s3)
print('9不存在于集合吗?',9 not in s3)# 集合的删除操作
del s3
# print(s3) # 删除之后就不能再使用了,此句会报错,提示未定义

集合的操作符 p55

A&B		交集
A|B		并集
A-b		差集
A^B		补集

截图待补充

代码实例:

# 集合的操作符
A={10,20,30,40,50}
B={30,50,88,76,20}# 交集
print(A&B)
# 并集
print(A|B)
# 差集
print(A-B)
# 补集
print(A^B)

集合的操作方法、集合的遍历 p56

集合的方法描述说明
s.add(x)若x不在集合s中,则将x添加到集合s
s.remove(x)若x在集合中,将其删除;若不在,则报错
s.clear()清除集合中的所有元素
# 集合的相关操作
s={10,20,30}
# 像集合中添加元素
s.add(100)
print(s)
# 删除元素
s.remove(20)
print(s)
# 清空集合中所有元素
s.clear()
print(s) # set()s={100,10,30}
# 集合的遍历操作
for item in s:print(item)for index,item in enumerate(s):print(index,item)# 集合的生成式
s={i for i in range(1,10)}
print(s)s={i for i in range(1,10) if i%2==1}
print(s)

列表、元组、字典、集合的区别

数据类型序列类型元素是否可以重复是否有序定义符号
列表list可变序列可重复有序[]
元组tuple不可变序列可重复有序()
字典dict可变序列key不可重复,value可重复无序{key:value}
集合set可变序列不可重复无序{}

Python 3.11新特性

结构模型匹配

对整个数据结构进行模式匹配

match data:case {}:passcase []:passcase ():passcase _:pass

代码实例:

data=eval(input('请输入要匹配的数据'))match data:case {'name':'a','age':20}:print('字典')case [10,20,30]:print('列表')case (10,20,40):print('元组')case _:print('相当于多重if中的else')

字典合并运算符 |

d1={'a':10,'b':20}
d2={'c':30,'d':40,'e':50}d3=d1|d2
print(d3)

同步迭代

match data1,data2:case data1,data2:pass

代码实例:

fruits={'apple','orange','pear','grape'}
counts=[10,3,4,5]for f,c in zip(fruits,counts):match f,c:case 'apple',10:print('10个苹果')case 'orange',3:print('3个橘子')case 'pear',4:print('4个梨')case 'grape',5:print('5个葡萄')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/233016.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

element-ui 抽屉里面嵌套弹窗

当我们在element-ui 的Drawer 抽屉里面嵌套弹窗时&#xff0c;有时会出现关闭弹窗后&#xff0c;抽屉依然被遮罩层挡着的情况&#xff0c;解决方法是 在 Drawer 里面写 :append-to-body"true" 和 :close-on-click-modal"false"&#xff0c;在弹窗里面写 :a…

vue中的事件修饰符、表单双向数据绑定和计算属性

目录 一、事件修饰符 二、表单双向数据绑定 模拟双向数据绑定&#xff08;双向数据绑定底层原理&#xff09; 三、计算属性 计算属性和methods方法区别&#xff1f; 计算属性和watch区别&#xff1f; 一、事件修饰符 stop 阻止事件冒泡 prevent 阻止事件默认行为 ca…

Java常见原子性操作

在Java语言中&#xff0c;对基本数据类型的变量读取赋值操作都是原子性的&#xff0c;对引用类型的变量读取和赋值的操作也是原子性的&#xff0c;因此诸如此类的操作是不可被中断的&#xff0c;要么执行&#xff0c;要么不执行&#xff0c;正所谓一荣俱荣一损俱损。 原子操作…

Linux线程——互斥锁

概念 互斥量&#xff08;mutex&#xff09;从本质上来说是一把锁&#xff0c;在访问共享资源前对互斥量进行加锁&#xff0c;在访问完成后释放互斥量上的锁。对互斥量进行加锁后&#xff0c;任何其他试图再次对互斥量加锁的线程将会被阻塞直到当前线程释放该互斥锁。 如果释放…

【HCIP学习记录】OSPF之DD报文

1.OSPF报文格式 24字节 字段长度含义Version1字节版本&#xff0c;OSPF的版本号。对于OSPFv2来说&#xff0c;其值为2。Type1字节类型&#xff0c;OSPF报文的类型&#xff0c;有下面几种类型&#xff1a; 1&#xff1a;Hello报文&#xff1b;● 2&#xff1a;DD报文&#xff1…

美国联邦机动车安全标准-FMVSS

FMVSS标准介绍&#xff1a; FMVSS是美国《联邦机动车安全标准》&#xff0c;由美国运输部下属的国家公路交通安全管理局(简称NHTSA)具体负责制定并实施。是美国联邦政府针对机动车制定的安全标准&#xff0c;旨在提高机动车的安全性能&#xff0c;减少交通事故中的人员伤亡。F…

ubuntu无 root 权限安装 screen

网上的方法主要是如下图的方法&#xff0c;源码安装&#xff0c;但是我一直 make install失败显示没有权限 然后选择放弃&#xff0c;然后随便试了一下方法 2&#xff0c;成功 方法 1 方法 2 pip3 install screen结果&#xff1a;

生物识别应用指纹的算法是什么样的?有什么性能?

方案特点 • 采用金融级安全芯片 ACH512 的指纹模组&#xff0c;指纹和密码安全存储&#xff0c;云端数据安全传输 • 采用高性能指纹专用安全MCU芯片ACM32FP4&#xff0c;支持小点阵图像算法处理 • 支持80*64、88*112、96*96、160*160、192*192等像素传感器 • 已适配传…

Ubuntu系统使用Nginx搭建RTMP服务器

环境&#xff1a; 推流端 rockpi s 主控rk3308 运行ubuntu系统 服务端 ubuntu 播放器 VLC播放器 服务端安装依赖&#xff1a; apt-get install build-essential libpcre3 libpcre3-dev libssl-dev创建nginx编译目录&#xff1a; mkdir my_nginx_rtmp cd my_nginx_rtmp/下载 …

【Python基础】文件读写

文章目录 [toc]打开文件open()函数参数解析示例 文件路径绝对路径示例 相对路径示例 打开文件的模式常用模式 读文件示例 写文件示例 按行读写文件readline()示例 readlines()示例 writelines()示例 关闭文件示例finally语句示例 上下文管理器示例 自定义读写类示例 打开文件 …

计算机网络:物理层(编码与调制)

今天又学会了一个知识&#xff0c;加油&#xff01; 目录 一、基带信号与宽带信号 1、基带信号 2、宽带信号 3、选择 4、关系 二、数字数据编码为数字信号 1、非归零编码【NRZ】 2、曼彻斯特编码 3、差分曼彻斯特编码 4、归零编码【RZ】 5、反向不归零编码【NRZI】 …

查找Apple Watch的序列号有重要意思,主要有两种方法

如果你打算购买二手Apple Watch&#xff0c;你可能需要检查它的序列号或IMEI号&#xff0c;来确保可靠性。以下是如何从Apple Watch和iPhone中查找序列号。 在Apple Watch上查找序列号和IMEI 1、在Apple Watch上&#xff0c;按下手表表面的数字皇冠以打开应用程序网格或列表。…

【设计模式--行为型--访问者模式】

设计模式--行为型--访问者模式 访问者模式定义结构案例优缺点使用场景扩展分派动态分派静态分派双分派 访问者模式 定义 封装一些作用于某种数据结构中的各元素的操作&#xff0c;它可以在不改变这个数据结构的前提下定义作用于这些元素的新操作。 结构 抽象访问者角色&…

晶体管的工作状态判断和工作条件

晶体管是模拟电路中基础的器件&#xff0c;对于电子工程师来说&#xff0c;了解晶体管工作的条件和判断晶体管的工作状态都是非常基础的&#xff0c;本文将带大家一起学习或回顾一下。 一、晶体管工作的条件 1.集电极电阻Rc&#xff1a; 在共发射极电压放大器中&#xff0c;…

在Linux中遇到“没有可用软件包”的情况

1. 旧的或不完整的软件源 更新你的软件源列表 对于Ubuntu/Debian系统 sudo apt-get update 对于RHEL/CentOS系统&#xff0c;使用命令 sudo yum update 或 sudo dnf update&#xff08;取决于你的系统版本&#xff09; 添加其他软件源&#xff1a; 例如&#xff0c;你可以安…

HPM6750系列--第十篇 时钟系统

一、目的 上一篇中《HPM6750系列--第九篇 GPIO详解&#xff08;基本操作&#xff09;》我们讲解了HPM6750 GPIO相关内容&#xff0c;在进一步讲解其他外设功能之前我们有必要先讲解一下HPM6750的时钟系统。 时钟可以说是微控制器系统中的心脏&#xff0c;片上外设模块必须依赖时…

爱普生手机打印助手Epson Smart Panel下载分享

新一代智能打印Epson Smart Panel为您提供一站式打印服务&#xff0c;人性化装机助手&#xff0c;智能联网&#xff0c;快速开启远程微信打印&#xff0c;全新交互式设计&#xff0c;打印体验焕新升级&#xff1b; 根据手机不同可选下列不同下载方式&#xff1a; 人性化智能装机…

《每天一分钟学习C语言·一》

1、转义字符&#xff1a;\n换行&#xff0c;\t前进一个tab键&#xff0c;\b退格键 2、八进制前面有0&#xff0c;%o或者%#o表示八进制&#xff0c;十六进制前有0X&#xff0c;%0x或者%#0x表示十六进制 3、%u打印无符号数&#xff0c;%g显示小数&#xff0c;类似于%f&#xff…

给机器安装ubuntu

准备材料: 1.镜像iso&#xff08;地址:清华镜像源https://mirror.tuna.tsinghua.edu.cn/ubuntu-releases/20.04/ubuntu-20.04.6-live-server-amd64.iso 2.U盘&#xff08;4gb就行&#xff09; 3.制作启动盘工具&#xff08;地址:https://clone-audio-dataset-1309770014.co…

【开题报告】基于uniapp的家庭记账小程序的设计与实现

1.研究背景 随着社会经济的发展和人们生活水平的提高&#xff0c;家庭财务管理变得越来越重要。家庭记账是一种重要的财务管理方式&#xff0c;通过记录和分析家庭的收入和支出情况&#xff0c;可以帮助家庭成员更好地理解和掌握自己的财务状况&#xff0c;合理规划和管理家庭…