python基本数据类型 - 字典集合
引入
在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储,年龄可以使用数字存储,python有6种基本数据类型,用于各种数据的存储,分别是:numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组)、Dictionary(字典).
本文介绍字典和集合。
字典类型(Dict)
定义
字典是可变类型的容器数据类型,可以存储任意数据类型的对象。{}内用逗号分隔开多个key:value,其中value可以是任意类型的值,key必须是不可变类型(字符串、数字、元组),一般是对value具有描述性质的字符串,键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。
# 创建字典的两种方式
dic = {'x': 'x', 'y': 'y'} # 方式一
dic = dict(x='x', 'y'=y) # 方式二
操作字典的方法
按照key存/取值
d={'k1':111}#针对赋值操作:key存在,则修改
d['k1']=222#针对赋值操作:key不存在,则创建新值
d['k2']=3333
print(d) # {'k1': 222, 'k2': 333}
len()
字典的键值对个数,当有key重复的时候,只记一次。
d={'k1':111,'k2':2222,'k1':3333,'k1':4444}
print(d) # {'k1': 4444, 'k2': 2222}
print(len(d)) # 2
成员运算
判断key是否包含在字典中
d={'k1':111,'k2':2222}
print('k1' in d) # True
print(111 in d) # False
删除操作
del
通用删除,没有返回值
d={'k1':111,'k2':2222}
del d['k1']
print(d) # {'k2': 2222}
pop()
根据key删除元素,会返回被删除的key对应的value
d={'k1':111,'k2':2222}
res=d.pop('k2')
print(d) # {'k1': 111}
print(res) # 2222
popitem()
popitem随机删除一组键值对,将被删除的键值对以元组的方式返回
d={'k1':111,'k2':2222}
res=d.popitem()
print(d) # {'k1': 111}
print(res) # ('k2', 2222)
keys() values() items()
在Python2中得到的分别是字典的所有key的列表、所有value的列表、所有键值对元组的列表,缺点是如果数据量非常大会很占用内存空间。
>>> d={'k1':111,'k2':2222}
>>> d.keys()
['k2', 'k1']>>> d.values()
[2222, 111]>>> d.items()
[('k2', 2222), ('k1', 111)]
在python3中得到的是会'下'出每个值的老母鸡,不会占用内存空间。
>>> d = {'name':'python','age':12}
>>> d.keys()
dict_keys(['name', 'age'])
>>> d.values()
dict_values(['python', 12])
>>> d.items()
dict_items([('name', 'python'), ('age', 12)])
循环遍历
遍历字典中的key
for k in d.keys():print(k)for k in d:print(k)
遍历字典的value
for value in d.values():print(value)
遍历字典中的键值对
for key, value in d.items():print(key, value)
其他内置方法
clear()
清空字典
d = {'name':'python','age':12}
d.clear()
pritn(d) # {}
update()
用其他字典更新当前字典,存在的键值对进行覆盖,不存在的进行添加
d = {'name':'python','age':12}
d.update({'sex': ',male', 'name': 'tony'})
print(d) # {'name': 'tony', 'age': 12, 'sex': ',male'}
get()
根据key取值,容错性高,弥补了使用[]取值时key不存在报错的问题
d = {'a':'gg','k':21}
# 弥补当key不存在时会报错的问题,不会报错,会返回None
print(d['k3']) # 会报错
d.get('k3') # 会返回none,容错性好
集合(Set)
定义
在{}内用 , 分隔开多个元素,
s = {} # 空的花括号默认定义的是空字典
print(type(s)) # <class 'dict'>s = set() # 通过这种方式得到的才是空集合
集合内的元素必须满足以下三个条件:
1.集合内的元素必须为不可变类型
s2 = {[1,2,3],1}
print(s2)
# 会报错
TypeError: unhashable type: 'list' # 不可哈希是可变类型
2.集合内元素无序
s = {1,2,'a',(1,4)} # 底层是调用了set()功能
print(s)
3.集合内元素没有重复,可以进行去重操作
s = {1,1,1,1,1,2,2}
print(s) # {1, 2}
类型转换
相当于底层调用for循环,取出每一个值放在集合中
# 对字符串进行转换,会自动将字符串中重复的去掉
s = set('hellollllop'))# 对列表进行转换
s = set([1,2,3,4,5,6])
# s = set([1,2,3,4,5,6,[1,2]]) 会报错
# print(s)# 对字典进行转换
s = set({'k1':12,'k2':13}.items())
s = set({'k1':12,'k2':13})
s = set({'k1':12,'k2':13}.values())
操作集合的方法
关系运算
两个集合可以进行数学中的交集、并集等运算。
a = {1, 2, 3}
b = {2, 3, 4}
交集
求两个集合共同的值,两种方法
res = a & b # {2, 3}
res1 = a.intersection(b) # {2, 3}
并集
两个集合所有的值,重复的去掉, 两种方式
res = a | b # {1, 2, 3, 4}
res1 = a.union(b) # {1, 2, 3, 4}
差集
比如,取a集合独有的值,a为被减,两种方式
res = a - b # {1}
res1 = a.difference(b) # {1}
对称差集
两个集合分别独有的值组成一个新的集合,两种方式
res = a ^ b # {1, 4}
res1.symmetric_difference(b) # {1, 4}
父子集
判断一个集合是否是另一个集合的父集/子集,如果两个集合相等,互为父子集
s4 = {1,2,3}
s5 = {1,2}res = s4.issubset(s5) # False 判断s4是否是s5的子集
res1 = s4.issuperset(s5) # True 判断s4是否是s5的父集
去重操作
集合的去重操作有局限性,只能对不可变类型的数据进行去重,并且无法保证原来的顺序。针对可变类型数据的去重操作,需要自己编写代码完成功能。
# 去掉列表中重复的字典
l=[{'name':'lili','age':18,'sex':'male'},{'name':'jack','age':73,'sex':'male'},{'name':'tom','age':20,'sex':'female'},{'name':'lili','age':18,'sex':'male'},{'name':'lili','age':18,'sex':'male'},
]
new_l = []
for info in l:if info not in new_l:new_l.append(info)l = new_l
l = new_l
len()
集合中元素的数量
a = {1, 2, 3, 4}
print(len(a)) # 4
成员运算
判断某个元素是否包含在集合中,结果是True或者False
print(1 in a) # True
print(5 not in a) # True
循环遍历
for i in a:print(a)
其他内置方法
discard() remove() pop()
# discard()删除指定元素,元素不存在不会报错,do nothing
a = {1, 2, 3, 4}
a.discard(5)
print(a) # {1, 2, 3, 4}
a.discard(4)
print(a) # {1, 2, 3}# remove()删除指定元素,元素不存在报错
a.remove(4) # KeyError: 4# pop()随机删除,返回被删除的元素
res = a.pop()
print(res) # 1
update()
使用另一个集合对当前集合进行更新,自动进行去重
a = {1, 2, 3, 4}
a.update({1, 2, 3, 4, 5})
print(a) # {1, 2, 3, 4, 5}
add()
为集合增加新的值
a.add(8)
isdisjoint()
判断两个集合是否完全独立,没有相同的部分
print(a.isdisjoint({1,2,3})) # False
相关文章:
python基本数据类型 - 字典集合
引入 在内存中存储的数据可以是不同的数据类型。比如名字可以使用字符串存储,年龄可以使用数字存储,python有6种基本数据类型,用于各种数据的存储,分别是:numbers(数字类型)、string(字符串)、List(列表)、Tuple(元组…...
python数据类型总结
标准数据类型 Python 有以下几种标准数据类型: 整数(int):表示整数值,如 1, -5, 0 等。浮点数(float):表示小数值,如 3.14, -0.01, 1.0 等。字符串(str&…...
TS内置类型总结
typeof 取对象身上的类型 const person {name: ,job: ,age:18 } type p typeof person ->> type p {name: string;job: string;age: number; }keyof取一个类型的属性明作为一个联合类型 const person {name: ,job: ,age: 18 } type p typeof person type k keyof p…...
Spring Cloud Alibaba: Gateway 网关过滤器 GatewayGatewayFilter factory (记录)
目录 AddRequestHeader GatewayFilter factory AddRequestHeadersIfNotPresent GatewayFilter factory AddRequestParameter GatewayFilter Factory AddResponseHeader GatewayFilter Factory CircuitBreaker GatewayFilter factory circuit breaker based on the status…...
Windows Server 2016版本说明
Windows Server 2016 Essentials edition Windows Server 2016 Essentials版是专为小型企业而设计的。它对应于Windows Server的早期版本中的Windows Small Business Server。此版本最多可容纳25个用户和50台设备。它支持两个处理器内核和高达64GB的RAM。它不支持Windows Serve…...
车载红外夜视「升温」
红外夜视赛道,正在升温。 本周,全球车载后视镜头部供应商Gentex宣布,领投以色列热成像技术初创公司ADASKY,后者在B轮融资中拿到了3000万美元。按照计划,Gentex将协助ADASKY将红外夜视技术推向汽车市场。 事实上&#x…...
ext3 文件系统的特点、优缺点以及使用场景
ext3(Third Extended File System)是 ext2 文件系统的后续版本,它在 ext2 文件系统的基础上增加了日志功能,以提高文件系统的可靠性和稳定性。下面是 ext3 文件系统的特点、优缺点以及使用场景: 特点: ext…...
rk3568 修改开机logo
rk3568 修改开机显示logo Android 显示 logo 的作用是为了标识应用程序或设备的品牌和身份。在应用程序中,logo 可以帮助用户快速识别应用程序,并与其他应用程序区分开来。在设备中,logo 可以帮助用户识别设备的品牌和型号,以及与…...
golang实现关键路径算法
关键路径算法(Critical Path Method,简称CPM)是一种用于项目管理的技术,主要用于计算项目中的关键路径和关键活动。关键路径是指项目中的最长路径,决定了项目的最短完成时间。关键活动是指在关键路径上的活动ÿ…...
Overcoming catastrophic forgetting in neural networks
目录 预备知识: 论文笔记 1. Introduction 2. Elastic weight consolidation 2.1 EWC allows continual learning in a supervised learning context 2.2 EWC allows continual learning in a reinforcement learning context 3. Conclusion 文章链接&#x…...
[Linux] Linux文件系统
🥁作者: 华丞臧. 📕专栏:【LINUX】 各位读者老爷如果觉得博主写的不错,请诸位多多支持(点赞收藏关注)。如果有错误的地方,欢迎在评论区指出。 文章目录 一、Linux文件系统1.1 磁盘1.2 inode1.3 软硬…...
有仰拍相机和俯拍相机时,俯拍相机中心和吸嘴中心的标定
俯拍相机中心和吸嘴中心的标定 文章目录 俯拍相机中心和吸嘴中心的标定 前言适用模型如下:一、使用一个标定片进行标定1.关键注意:2.标定步骤: 二、使用一个L型的工件1.关键注意:2.标定步骤: 总结 前言 在自动化设备领…...
【Vue学习笔记5】Vue3中的响应式:ref和reactive、watchEffect和watch
所谓响应式就是界面和数据同步,能实现实时更新。 Vue 中用过三种响应式解决方案,分别是 defineProperty、Proxy 和 value setter。Vue 2 使用的方案是 defineProperty API。Vue3中使用的方案是Proxy和value setter。 1. ref和reactive vue3中实现响应…...
自动化测试工具的基本原理以及应用场景
自动化测试工具是现代软件开发流程中必不可少的组成部分,它可以通过编写脚本或使用图形用户界面工具自动化测试过程,提高测试的效率和准确性。本文将介绍自动化测试工具的基本原理以及应用场景。 自动化测试工具的基本原理 自动化测试工具通常采用的原理…...
《Java虚拟机学习》 java代码的运行过程
1. Java文件转换 当我们保存java文件后,首先由编译器编译成class文件,然后通过Java虚拟机将class文件转换成字节码文件 2.Java虚拟机是怎么运行Java文件 首先将java文件加载到java虚拟机中,然后由虚拟机将类元信息存储在 虚拟机的方法区中。…...
关于Intel处理器架构中AVX2里Gather特性的说明
在 Intel Haswell 架构里引入了 Gather 特性。它使得CPU可以使用向量索引存储器编址从存储器取非连续的数据元素。这些gather指令引入了一种新的存储器寻址形式,该形式由一个 基地址寄存器(仍然是通用目的寄存器)和通过一个 向量寄存器&#…...
UNIX常用命令(C站最全,一文通关)
unix常见命令列举如下,除了看还要会用: ls - 列出目录下的文件 cd - 切换目录 pwd - 显示当前目录 mkdir - 创建目录 rm - 删除文件或目录 rmdir - 删除空目录 cp - 复制文件或目录 mv - 移动文件或目录,或重命名 cat - 显示文件内容 less - 分…...
Vue监听属性详细讲解
文章目录 定义要监听的属性定义 watch修改监听的属性值监听数组变化监听对象变化监听计算属性变化监听事件变化监听路由变化 在 Vue 中,可以使用 watch/$watch 方法监听数据、计算属性、事件和路由的变化,从而实现数据绑定、事件监听和路由控制等功能。需…...
网申形式一览:这三种投递方式,你了解吗?
银行校招是个滚动的过程,每家银行的网申期并不一致。想要在看重的银行网申期投出一份漂亮的简历,简历自身要“过硬”。是不是还有同学不清楚网申简历形式? 从如信银行考试中心了解到,银行网申,尤其是大行网申ÿ…...
vue项目将多张图片生成一个gif动图
当前做项目有一个需求是将多张图片生成一个gif动图的形式 类似下面图片几张图片叠加生成一个gif动图 图片涉及工作隐私,就不公开啦 我们要引入一个gif.js的引入包,但是他没有直接引入的方式,只能从官方下载文件包,下载地址&#…...
OpenClaw模型微调:让Phi-3-mini适配你的专属工作流
OpenClaw模型微调:让Phi-3-mini适配你的专属工作流 1. 为什么需要微调Phi-3-mini? 当我第一次将Phi-3-mini接入OpenClaw时,发现这个"聪明"的小模型在处理我的专业领域任务时总有些力不从心。它能够理解通用指令,但当我…...
OpenClaw数据可视化:千问3.5-9B自动生成分析图表
OpenClaw数据可视化:千问3.5-9B自动生成分析图表 1. 为什么需要AI驱动的数据可视化? 上周我面对一个典型的数据分析困境:手头有3份Excel表格,分别是销售数据、用户行为日志和库存记录。老板要求第二天早晨提交可视化报告&#x…...
OpenClaw性能优化指南:千问3.5-35B-A3B-FP8长任务处理技巧
OpenClaw性能优化指南:千问3.5-35B-A3B-FP8长任务处理技巧 1. 长任务处理的痛点与优化思路 当我第一次尝试用OpenClaw对接千问3.5-35B-A3B-FP8模型处理复杂多模态任务时,遇到了几个典型问题:一个包含20张产品图片的分析任务,运行…...
避坑指南:Qt菜单栏triggered信号连接的5个常见错误及解决方法
Qt菜单栏triggered信号连接的5个实战避坑指南 在Qt开发中,菜单栏作为用户交互的重要组件,其点击事件处理看似简单却暗藏玄机。许多开发者都曾掉进过信号槽连接失效、内存泄漏或窗口阻塞的陷阱里。今天我们就来剖析这些高频问题背后的原因,并提…...
OpenClaw多通道管理:千问3.5-9B同时服务飞书与钉钉
OpenClaw多通道管理:千问3.5-9B同时服务飞书与钉钉 1. 为什么需要多通道管理? 上周三凌晨两点,我被手机连续震动吵醒——团队同时用飞书和钉钉给我发了紧急需求。半梦半醒间突然想到:既然OpenClaw能自动化处理消息,为…...
【计算机视觉】Intel RealSense深度相机与OpenCV融合:从基础配置到实时交互应用
1. 深度相机与OpenCV的黄金组合 第一次接触Intel RealSense深度相机时,我被它同时获取RGB和深度数据的能力惊艳到了。这就像给普通摄像头装上了"立体视觉",不仅能看见物体的颜色和形状,还能精确感知物体离相机有多远。而OpenCV作为…...
老旧电脑焕新生:OpenClaw+Qwen3-4B低资源占用优化方案
老旧电脑焕新生:OpenClawQwen3-4B低资源占用优化方案 1. 为什么需要低资源优化方案 去年我翻出一台2015款的MacBook Air,4GB内存的配置在当下连开几个Chrome标签页都吃力。但作为技术爱好者,我总想让它发挥余热。当我尝试在这台设备上运行O…...
MPL115A2气压传感器驱动开发与嵌入式I²C实践
1. MPL115A2气压传感器技术解析与嵌入式驱动开发实践MPL115A2是由NXP(原Freescale)推出的一款高精度、低功耗、IC接口的绝对气压传感器,专为消费电子和工业应用中的海拔高度测量、天气监测及气压补偿等场景设计。该器件采用MEMS压阻式传感原理…...
TypeScript 快速实战系列:基础入门|TypeScript 核心语法 1 小时吃透(必备基础)
🔥 导读:上一篇我们搞定了TS环境搭建,也搞懂了为什么大模型开发必须学TS。今天这篇,不搞复杂理论,只讲大模型开发中「最常用、最核心」的TS语法——基础类型类型注解,1小时就能吃透,学完就能给大…...
06_Neo4j知识体系之AuraDB云服务与部署实战
06_Neo4j知识体系之AuraDB云服务与部署实战 体系 云服务层:AuraDB 完全托管、版本层级、定价模式、AWS/Azure/GCP 集成、弹性扩展、高可用、快速开始关联能力:与企业上云、GraphRAG 交付、低运维团队部署、全球可用区建设密切相关适用对象:云…...
