python的散列类型与字符编码

文章目录

  • 一、 初识散列类型(无序序列)
  • 二、认识集合
    • 集合的方法
  • 二、认识字典
    • 字典方法
    • 声明空变量
  • 三、字符编码元组名=() #声明一个空元组

在这里插入图片描述

一、 初识散列类型(无序序列)

数据类型分为3种:
python的序列类型有好几种,之前的博文讲到了两种类型
1.数值类型:int/float/bool 只能存储单个数据

2.序列类型:str/list/tuple,有序的存储多个数据–有序类型 有下标 可以进行索引,切片,步长的操作

散列类型:集合/字典
1.可以存放多个数据
2.内部是无序的(没有下标)
3.内部数据不重复

二、认识集合

集合(set):
表示形式为:用{}大括号包裹起来的数据,里面的数据用逗号隔开
集合的特性:主要是用来进行去重和逻辑判断
1.唯一性
2.无序性

语法:
集合名={数据1,数据2,数据3,…}

语法:

room={'夏洛特','狂魔张三','刘金连','勇哥随便学','玖玖归壹'}
print(room)
print(type(room)) #<class 'set'>num={1,5,6,7,8,9,1,5,6,2}
print(num) #正常输出一个集合,里面重复元素自动去除 代表集合的唯一性
#print(num[4]) #报错 因为集合是无序类型 没有下标

集合可以进行简单的逻辑运算 交并差集
集合1&集合2–>获取交集–一个数据,两个集合里都有它
集合1|集合2–>获取并集–>两个集合里的所有数据(去重)
集合1-集合2–>获取差集–两个集合之间,自己独有的数据

符号输入
& --> shift + 7
| --> shift +
- --> 减号

生活例子:
现在有两个碗
碗A:{花菜,鸡肉,凤爪}
碗B:{鸡肉,豆腐,梅菜}
交集–>两个碗里都有的菜–>鸡肉
并集–>两个碗里所有的菜–>花菜,鸡肉,凤爪,豆腐,梅菜
差集–>碗A-碗B–>碗A独有的菜 花菜,凤爪
碗B-碗A–> 碗B独有的菜 豆腐,梅菜

num1={1,2,3}
num2={3,4,5}
print(num1&num2) #交集{3}
print(num1|num2) #并集{1, 2, 3, 4, 5}
print(num1-num2) #差集{1, 2}
print(num2-num1) #差集{4, 5}集合里可以放很多数据(不能放列表)
集合里只能放不可变数据!!!
demo={'你好',55,9.9,True,(12,3),[12,3]}
# print(demo) #不能放列表,会报错

集合的本质:
1.存储非重复数据–>去重
2.进行逻辑判断,进行交并差集运算

集合的方法

add: 添加一个数据到集合里

集合.add(数据)room.add('好好学习')#随机 因为是无序所以随机增加print(room) 

update: 把一个序列类型打散后添加到集合里

集合.update(序列数据)room.update('天天向上') #打散添加,打散后cc重复的内容会自动去重print(room)

pop: 删除一个数据(随机删除)

集合.pop()
room.pop()
print(room)

remove: 删除指定的数据

集合.remove(数据)
room.remove('1024程序员节')
print(room)

clear:清除所有数据

集合.clear()
room.clear() #set()空集合
print(room)

二、认识字典

字典(dict)
表示形式为:用大括号{}包裹起来的数据,存储数据是以键值对的方式来存储,数据之间用逗号隔开,主要存储一些带有’说明性质’的数据
键值对: 左边是键 中间冒号 右边是值
key:value–>键相当于名字,值就是数据

键名一般是用字符串或整型来表示
值里面什么都可以放,放变量,函数,杂七杂八都可以

声明语法:

字典名={:,:}info={'国家':'中国','年龄':75}info={'国家':'中国','年龄':75}#国家=中国,年龄=75 #这里的字典的作用是一个说明效果,方便理解,有一个好的可读性

用字典类型保存数据的有一点好处:比起用列表/元组存储数据, 他看起来更加清晰
info={‘中国’,75} #这里的一些数据如果不加注释,可能不清楚表示的是什么东西
所以如果要的数据,有明显的对照关系,就可以用字典来保存,看起来也更加的清晰明了

字典的输出:

print(字典名)
print(info)
print(type(info)) #<class 'dict'>
print(字典名[键名])#输出指定键的值
print(info['国家']) #输出值,中国

字典的特性:
1.字典是通过键值对的方式来获取数据,而不是通过下标索引获取
2.字典里的键是不可变的,只能使用数字,字符串或者元组,不能使用列表

day=(2,3)
food={1:'肉','水果':'葡萄',day:'打折'
}
print(food)# info2={
#     [1,2]:'伊诺'
# }
#print(info2) #报错,键不可以放列表

3.字典里的键值是可以修改的,还可以嵌套(字典里还可以放个字典)

info3={'国家':'中国','地址':{1:'工作地址XXX',2:'家乡地址XXX'}
}
print(info3)

总结:用一个看起来更清晰的方式来保存数据,保存方式为键值对可以把键值对理解为变量 键就是变量名,值就是变量值

字典方法

info={'国家':'中国','年龄':75
}

setdefault: 给字典添加一个键值对. 如果已经有这个键了.就不会新增。
1.新增一个键,没有写值,值默认为空

字典.setdefault(键名)info.setdefault('身高') #没有写值,值默认为空 Noneprint(info)

2.新增一个键值对

字典.setdefault(键名,)info.setdefault('家乡','湖南')print(info)

pop: 通过键名删除指定的数据

字典.pop(键名)info.pop('年龄') #删除年龄这一个键值对print(info)

popitem: 删除一个键值对,从最后一个数据开始删

字典.popitem()info.popitem()print(info)

clear: 清除整个字典

字典.clear()info.clear() #{} 空字典print(info)

update: 以键值对的方式修改数据.如果没有就新增

1.修改键的值

字典.update({:})info.update({'国家':'中国'})print(info)

2.如果没有这个键值对.就转为新增

字典.update({:})info.update({'毕业学校':'XX学校'})print(info)

3.增加多个键值对

字典.update({:,:})info.update({'职业':'讲师','性别':'女'})print(info) 

字典[键名]=值 #修改指定键的值,键是存在的情况下,会将原来的值进行修改,否则添加新的键值对

info['国家']='俄罗斯' #找到info里面的性别,把值改为俄罗斯
info['生肖']='鸡' #也算是一个新增方法,创建新的键值对
print(info)

字典跟集合一样是无序序列,所以是无法通过下标进行获取数据,但是字典有查询数据的方法,但是查询的方法依旧也需要加print包裹输出

get: 通过键名,获取值. 如果没有这个键,输出None

字典.get(键名)print(info.get('余额'))print(info.get('籍贯')) #没有籍贯这个键值对,输出None

keys: 获取所有的键

字典.keys()print(info.keys())

values: 获取所有的值

字典.values()print(info.values())

items: 获取所有的键值对

字典.items()print(info.items())

声明空变量

列表名=[] #声明一个空列表
元组名=() #声明一个空元组
字符串名=‘’ #声明一个空字符串
字典名={} #声明一个空字典
集合名=set() #声明一个空集合

三、字符编码元组名=() #声明一个空元组

计算机语言最底层是由0和1组成,计算机是怎么做到把一堆的0和1变成我们看到的字–>字符编码–>在计算机里面有一个翻译工具,作用就是把机器码数据转换为人类看懂的字

字符编码–翻译工具–把计算机的东西翻译成人类能理解的东西

第一套字符编码叫ascii码,里面收纳了一些常用符号,数字,字母–>没有中文和其他语言
ascii码表用法有点类似于字典–>每个字在表里都有一个对应的序号,可以通过序号找到字,也可以通过字找到序号

后面很多国家 地区都自己研发了一套字符编码
中国研发出GBK编码–>有两万多个汉字
同时间中国台湾–>BIG5,大五码.繁体字

每个国家的语言不同,所以只显示自己国家的文字
用别的国家软件就很容易出现问题
#就比如说如果用GBK写的内容用BIG5码打开就可能会乱码不通用 看不懂

针对这个问题,有个国际组织,专门收集了全世界大部分国家的语言文字,汇总做了一个大的字典并推行使用,以后统一用大字典就可以尽量避免乱码–>utf-8

核心点:
1.目前世界上最主流的编码是utf-8,#大部分默认用utf-8
2.一个程序是用什么编码写的,你就要用对应的编码去读取,否则会出现乱码问题

在程序每个字都是有对应的序号
ord(字符)-->通过字符,找到序号
chr(序号)-->通过序号,找到字符print(ord('A'))
print(chr(66))
print('a'>'b')

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

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

相关文章

Appium中的api(一)

目录 1.基础python代码准备 1--参数的一些说明 2--python内所要编写的代码 解释 2.如何获取包名和界面名 1-api 2-完整代码 代码解释 3.如何关闭驱动连接 4.安装卸载app 1--卸载 2--安装 5.判断app是否安装 6.将应用放到后台在切换为前台的时间 7.UIAutomatorViewer的使用 1--找…

Oracle CONNECT BY、PRIOR和START WITH关键字详解

Oracle CONNECT BY、PRIOR和START WITH关键字详解 1. 基本概念2. 数据示例3. SQL示例3.1. 查询所有员工及其上级3.2. 显示层次结构3.3. 查询特定员工的子级 4. 结论 在Oracle数据库中&#xff0c;CONNECT BY、PRIOR和START WITH关键字主要用于处理层次结构数据&#xff0c;例如…

5、JavaScript(四) ajax+js高级+BOM

25.ajax : 前端向后端异步的取数据而无需刷新页面的技术 1 公司中的整体工作流程 1、项目开发的流程 每个职位该做的工作&#xff1a; 产品经理&#xff1a;提需求的 与客户沟通 画出原型图给程序员使用 UI设计师&#xff1a;美化 替换UI框架&#xff1a;antd element-ui e…

sql-labs靶场第十六关测试报告

目录 一、测试环境 1、系统环境 2、使用工具/软件 二、测试目的 三、操作过程 1、寻找注入点 2、注入数据库 ①寻找注入方法 ②爆库&#xff0c;查看数据库名称 ③爆表&#xff0c;查看security库的所有表 ④爆列&#xff0c;查看users表的所有列 ⑤成功获取用户名…

学习--四元数介绍

2022年的草稿箱里的一篇 四元数由William Rowan Hamilton发现 定义与复数类似&#xff0c;有三个虚部 q a b i c j d k qabicjdk qabicjdk 其中 i 2 j 2 k 2 i j k − 1 i^2j^2k^2ijk-1 i2j2k2ijk−1 四元数的模长&#xff1a; 四维的长度 加减法&#xff1a; 对应分…

linux-牛刀小试

题目一&#xff1a; 1.第一问 首先创建用户tab在超级用户root的终端输入useradd tab 切换到tab用户&#xff1a; 推出重新登录到tab用户或者su – tab切换到tab用户 2.第二问 在桌面创建SHEGNCHAN目录 在SHENGCHAN文件夹下创建相应的文件&#xff1a; 3.第三问 首先&#…

笔记本使用虚拟机,使用Ubuntu打开摄像头

最近在搞ros相关的内容&#xff0c;亲测了一下虚拟机Ubuntu打开摄像头&#xff0c;也是需要简单的设置的。 只需要 简单设置这四步 目录 设置usb3.1打开摄像头查看摄像头显示摄像头内容 设置usb3.1 这一步是为了防止打开摄像头的时候&#xff0c;没有画面。 打开摄像头 选…

V4L2驱动框架

文章目录 一、V4L2简介二、v4l2驱动关键组件&#xff08;一&#xff09;video_device结构体v4l2操作方法结构体v4l2的ioctl操作方法结构体 &#xff08;二&#xff09;v4l2_device结构体 一、V4L2简介 V4L2&#xff0c;即Video for Linux two&#xff0c;是Linux内核中用于视频…

Linux Redis查询key与移除日常操作

维护老项目Express node 编写的后端程序、有这么一个方法、没有设置redis过期时间&#xff08;建议设置过期时间&#xff0c;毕竟登录生产服务器并不是每个人都有权限登录的&#xff01;&#xff01;&#xff01;&#xff09;。如果变动只能通过登录生产服务器、手动修改… 于…

本地docker部署中间件和应用

Docker Desktop搭建 安装完成之后使用docker下载镜像&#xff0c;报以下错误&#xff1a; 解决办法&#xff1a; Docker Engine配置能访问的镜像地址&#xff1a; {"builder": {"gc": {"defaultKeepStorage": "20GB","enabled…

使用 Elasticsearch 作为向量数据库询问有关你的 GitHub 存储库的问题

作者&#xff1a;来自 Elastic Fram Souza 本博客介绍了使用 RAG 和 Elasticsearch 实现语义代码查询的 GitHub Assistant&#xff0c;提供对 GitHub 存储库的洞察&#xff0c;并可扩展到 PR 反馈、问题处理和生产准备情况审查。 该项目允许你直接与 GitHub 存储库交互并利用语…

【YOLOv11】制作使用YOLOv11的docker环境

目录 一 安装docker 1 安装依赖 2 添加docker官网 GPG 密钥、设置stable 仓库 3 安装 4 使用 二 环境制作 ① 拉基础镜像 ② 起容器 ③ 安装Anaconda3 ④ 安装YOLO11 ⑤ /root/.bashrc ⑥ 退出容器 ⑦ 保存镜像 ⑧ 镜像的使用 一 安装docker ubuntu:20.04 1 安装…

Java项目-基于springboot框架的人职匹配推荐系统项目实战(附源码+文档)

作者&#xff1a;计算机学长阿伟 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、ElementUI等&#xff0c;“文末源码”。 开发运行环境 开发语言&#xff1a;Java数据库&#xff1a;MySQL技术&#xff1a;SpringBoot、Vue、Mybaits Plus、ELementUI工具&#xff1a;IDEA/…

【LeetCode】每日一题 2024_10_24 找到连续赢 K 场比赛的第一位玩家(模拟/脑筋急转弯)

前言 每天和你一起刷 LeetCode 每日一题~ 1024 程序员节快乐~ LeetCode 启动&#xff01; 题目&#xff1a;找到连续赢 K 场比赛的第一位玩家 代码与解题思路 题目让我们从第一个元素开始让数组中的元素排队一个个打擂台&#xff0c;直到找到最先赢下 k 次的元素编号 因为…

代码随想录算法训练营第六天|454四数相加II、 383赎金信、15三数之和、18四数之和

day06 1. 454四数相加II 首先定义 一个unordered_map&#xff0c;key放a和b两数之和&#xff0c;value 放a和b两数之和出现的次数。遍历大A和大B数组&#xff0c;统计两个数组元素之和&#xff0c;和出现的次数&#xff0c;放到map中。定义int变量count&#xff0c;用来统计 …

系统性能优化的终极武器,一键让你的电脑焕发第二春

作为Windows系统维护的得力助手&#xff0c;PC Fresh为用户带来全方位的电脑优化解决方案。这款智能系统工具采用先进的检测引擎&#xff0c;不仅能够实时监控计算机的运行状态&#xff0c;更可以精准定位影响性能的潜在问题。通过智能诊断技术&#xff0c;软件会针对每台电脑的…

多去尝试 AI 产品经理面试,你会意外发现……

前言 这两天跟很多做程序员的朋友聊天&#xff0c;怎么看全网火爆的大模型。让我挺意外的是&#xff0c;大家的反馈普遍都很焦虑 。 在AI大模型微调领域的产品经理面试中&#xff0c;总会遇到一系列与技术细节、项目经验、市场趋势以及职业规划相关的问题。以下是一些建议的面…

GEE引擎传奇UI界面修改教程

还记得小林之前给大家分享了gom引擎UI界面编辑教程&#xff0c;今天给大家分享一下gee引擎UI界面修改教程 首先打开登录器生成器-客户端界面设置 在客户端界面设置这里可以自定义UI素材&#xff0c;也可以直接在原素材上编辑主界面 传奇根目录指向的是你的传奇客户端根目录&am…

【LaTeX】调整itemize中item的间距

LaTeX中调整itemize中item的间距 1. 使用 \setlength 调整间距2. 使用 enumitem 宏包来更灵活地调整 在 LaTeX 中&#xff0c;调整 itemize 列表中各项 (item) 的间距可以通过以下方法实现&#xff1a; 1. 使用 \setlength 调整间距 通过 \setlength 调整列表项之间的间距。两…

【随手笔记】远程升级之如何平衡下载包大小与速率?

1. 远程升级基本信息 使用NB_BC26模组&#xff0c;通过AT指令使用TCP的协议与公司后台交互升级的固件为BIN文件&#xff0c;使用原始固件包升级&#xff0c;未使用差分方式原始固件包有110K,大小左右&#xff0c;固件的存储为外置的FLASH W25Q16,w25q16最小存储单位为页&#…