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的引入包,但是他没有直接引入的方式,只能从官方下载文件包,下载地址&#…...
Linux 文件类型,目录与路径,文件与目录管理
文件类型 后面的字符表示文件类型标志 普通文件:-(纯文本文件,二进制文件,数据格式文件) 如文本文件、图片、程序文件等。 目录文件:d(directory) 用来存放其他文件或子目录。 设备…...
P3 QT项目----记事本(3.8)
3.8 记事本项目总结 项目源码 1.main.cpp #include "widget.h" #include <QApplication> int main(int argc, char *argv[]) {QApplication a(argc, argv);Widget w;w.show();return a.exec(); } 2.widget.cpp #include "widget.h" #include &q…...
TRS收益互换:跨境资本流动的金融创新工具与系统化解决方案
一、TRS收益互换的本质与业务逻辑 (一)概念解析 TRS(Total Return Swap)收益互换是一种金融衍生工具,指交易双方约定在未来一定期限内,基于特定资产或指数的表现进行现金流交换的协议。其核心特征包括&am…...
【HTML-16】深入理解HTML中的块元素与行内元素
HTML元素根据其显示特性可以分为两大类:块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...
【RockeMQ】第2节|RocketMQ快速实战以及核⼼概念详解(二)
升级Dledger高可用集群 一、主从架构的不足与Dledger的定位 主从架构缺陷 数据备份依赖Slave节点,但无自动故障转移能力,Master宕机后需人工切换,期间消息可能无法读取。Slave仅存储数据,无法主动升级为Master响应请求ÿ…...
3403. 从盒子中找出字典序最大的字符串 I
3403. 从盒子中找出字典序最大的字符串 I 题目链接:3403. 从盒子中找出字典序最大的字符串 I 代码如下: class Solution { public:string answerString(string word, int numFriends) {if (numFriends 1) {return word;}string res;for (int i 0;i &…...
【JavaWeb】Docker项目部署
引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...
蓝桥杯3498 01串的熵
问题描述 对于一个长度为 23333333的 01 串, 如果其信息熵为 11625907.5798, 且 0 出现次数比 1 少, 那么这个 01 串中 0 出现了多少次? #include<iostream> #include<cmath> using namespace std;int n 23333333;int main() {//枚举 0 出现的次数//因…...
处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的
修改bug思路: 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑:async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
