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的引入包,但是他没有直接引入的方式,只能从官方下载文件包,下载地址&#…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...

江苏艾立泰跨国资源接力:废料变黄金的绿色供应链革命
在华东塑料包装行业面临限塑令深度调整的背景下,江苏艾立泰以一场跨国资源接力的创新实践,重新定义了绿色供应链的边界。 跨国回收网络:废料变黄金的全球棋局 艾立泰在欧洲、东南亚建立再生塑料回收点,将海外废弃包装箱通过标准…...

Nuxt.js 中的路由配置详解
Nuxt.js 通过其内置的路由系统简化了应用的路由配置,使得开发者可以轻松地管理页面导航和 URL 结构。路由配置主要涉及页面组件的组织、动态路由的设置以及路由元信息的配置。 自动路由生成 Nuxt.js 会根据 pages 目录下的文件结构自动生成路由配置。每个文件都会对…...
Java线上CPU飙高问题排查全指南
一、引言 在Java应用的线上运行环境中,CPU飙高是一个常见且棘手的性能问题。当系统出现CPU飙高时,通常会导致应用响应缓慢,甚至服务不可用,严重影响用户体验和业务运行。因此,掌握一套科学有效的CPU飙高问题排查方法&…...

中医有效性探讨
文章目录 西医是如何发展到以生物化学为药理基础的现代医学?传统医学奠基期(远古 - 17 世纪)近代医学转型期(17 世纪 - 19 世纪末)现代医学成熟期(20世纪至今) 中医的源远流长和一脉相承远古至…...

搭建DNS域名解析服务器(正向解析资源文件)
正向解析资源文件 1)准备工作 服务端及客户端都关闭安全软件 [rootlocalhost ~]# systemctl stop firewalld [rootlocalhost ~]# setenforce 0 2)服务端安装软件:bind 1.配置yum源 [rootlocalhost ~]# cat /etc/yum.repos.d/base.repo [Base…...

【C++进阶篇】智能指针
C内存管理终极指南:智能指针从入门到源码剖析 一. 智能指针1.1 auto_ptr1.2 unique_ptr1.3 shared_ptr1.4 make_shared 二. 原理三. shared_ptr循环引用问题三. 线程安全问题四. 内存泄漏4.1 什么是内存泄漏4.2 危害4.3 避免内存泄漏 五. 最后 一. 智能指针 智能指…...

【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...

MacOS下Homebrew国内镜像加速指南(2025最新国内镜像加速)
macos brew国内镜像加速方法 brew install 加速formula.jws.json下载慢加速 🍺 最新版brew安装慢到怀疑人生?别怕,教你轻松起飞! 最近Homebrew更新至最新版,每次执行 brew 命令时都会自动从官方地址 https://formulae.…...