首页 > 编程语言 >Python入门知识点 7--散列类型与字符编码

Python入门知识点 7--散列类型与字符编码

时间:2024-07-24 10:28:11浏览次数:15  
标签:info 知识点 Python -- 键值 print 集合 字典

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

数据类型分为3种:
    前面已经学过了两种类型
    1.数值类型:int/float/bool 只能存储单个数据
    
    2.序列类型:str/list/tuple,有序的存储多个数据--有序类型,有下标,可以进行索引切片步长操作
        
    3.散列类型:字典/集合
        (1)可以存放多个数据
        (2)内部是无序的(没有下标)
        (3)内部数据不重复

2、认识集合

集合set:表示形式为:用大括号{}包裹起来的数据,里面的数据用逗号隔开

集合的特性:主要是用来进行去重和逻辑判断
    1.唯一性
    2.无序型
    
语法:
    集合名={数据1,数据2,数据3,....}

room={'张三','李四','王五','麻子','小赵'}
print(room)
print(type(room)) #<class 'set'>

num={1,2,3,4,5,6,7,8,9,1,1,2,2,4,4,3}
print(num) #正常输出一个集合,里面重复元素会自动去除,代表集合的唯一性
# print(num[1]) 报错,因为集合是无序类型,没有下标

集合可以进行简单的逻辑运算--交并差集
    集合1 & 集合2-->获取交集--两个集合都有的数据
    集合1 | 集合2-->获取并集--两个集合里所有的数据(去重)
    集合1 - 集合2-->获取差集--两个集合之间,自己(在前的那一个)独有的数据
    
例子:现在我有两只碗
    碗1={花菜,鸡肉,凤爪}
    碗2={鸡肉,豆腐,梅菜}
    
交集-->两只碗里面都有的菜-->鸡肉
并集-->两只碗里所有的菜-->花菜,鸡肉,凤爪,豆腐,梅菜
差集-->碗1-碗2 -->碗1独有的菜  花菜,凤爪
      碗2-碗1 -->碗2独有的菜  豆腐,梅菜

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}

集合里可以放很多数据(不能放列表,也不能嵌套集合,字典)
#talk={'你好',66,9.9,True,[12,3],{1,2}}
#print(talk) #报错 不能放列表,集合

#遍历集合
for i in talk:
    print(i)

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

3、集合的方法

room= {'麻子','小王','老莫','小赵'} 

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

update:  把一个序列类型打散后添加到集合里
	集合.update(序列数据)
	room.update('天天向上')
	print(room)

pop: 删除一个数据(随机删除)
	集合.pop()
	room.pop()
	print(room)

remove: 删除指定的数据
	集合.remove(数据)
	room.remove('小赵')
	print(room)
    
clear:清除所有数据
    集合.clear()
	room.clear()
	print(room) #set()空集合

4、认识字典

字典dict:表示形式为用{}大括号包裹起来的数据,存储数据是以键值对的方式存储

,数据之间要用逗号隔开,主要存储一些带有'说明'性质的数据
    键值对   左边是键 中间冒号 右边是键值
    key:value
        
声明语法:
    字典名={键:值,键:值}

    info={
        '姓名':'小赵',
        '余额':8.8,
        '年龄':18
    }

字典的输出

print(info)
print(type(info)) #<class 'dict'>
    
print(字典名[键名]) #输出指定键的值
print(info['姓名']) #输出指定键的值‘小赵’

字典的特性:
    1.字典是通过键值对的方式来获取数据,而不是通过下标索引获取

print(info['姓名']) #输出指定键的值‘小赵’


    2.字典里的键是不可变的,只能使用数字,字符串或者元组,不能使用列表(一般键是用字符串或者整型来表示)

day=(2,3)
food={
    1:'肉',
    '水果':'葡萄',
    day:'打折日'
}
print(food)

# info2={
#     [1,2]:'小赵'
# }
# print(info2) #报错 键不能放列表

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

info3={
 '姓名':'小赵',
 '余额':[8.8,1,9],
 '地址':{1:'工作地址',2:'家乡地址'}
}
print(info3)

4.字典里面键名是唯一的

info4={
  '姓名':'小赵',
  '余额':8.8,
  '年龄':18,
  '年龄':19,
  '年龄':20
}
print(info4) #只会保留最后一个键值对

如果数据有明显的对照关系,就可以用字典来保存,看起来会更加的清晰明了

#字典遍历

for i in info5:
    print(i) #i拿到的是键
    print(info5[i]) #字典名[键名]就可以拿到对应的键值

5、字典方法

info={
    '姓名':'小赵',
    '余额':8.8,
    '年龄':18
	}

setdefault: 给字典添加一个键值对,如果已经有这个键了,就不会新增
	1.新增一个键,没有写值,值默认为空
	字典.setdefault(键名)
	info.setdefault('身高') #没有值,值默认为空
	print(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({'爱好':'运动'})
	print(info)
    
    3.增加多个键值对
	字典.update({键:值,键:值})
	info.update({'职业':'学生','性别':'女'})
	print(info)	
    
字典[键名]=值 #修改指定键的值 键是存在的情况下会将原来的值进行修改操作,否则添加为新的键值对
info['性别']='男' #找到info里面的性别,把键值改为男
info['生肖']='龙' #也算是一个新增方法,创建新的键值对
print(info)

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

get: 通过键名,获取值. 如果没有这个键,输出None
	字典.get(键名)
  	print(info.get('余额'))
    print(info.get('籍贯'))

keys: 获取所有的键
	字典.keys()
 	print(info.keys())

values: 获取所有的值
	字典.values()
	print(info.values())

items: 获取所有的键值对
	字典.items()
	print(info.items())

6、声明空变量

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

7、字符编码

计算机语言最底层是由0和1组成,计算机是怎么把一堆的0和1变成我们看到字呢-->字符编码

字符编码 -- 翻译工具 --把计算机的机器码翻译成人类能看的懂的字

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

但是随着科技进步,很多国家都拥有了自己的计算机技术能力,这时候ASCII码就不能满足需求了-->我要用中文/或者其他的语言

后面很多国家、地区都自己研发了一套字符编码
    中国研发出GBK编码-->有两万多个汉字
    同时间中国台湾-->BIG5,大五码,繁体字
    
每个国家的语言不同  所以只会显示出自己国家的文字
用别的国家软件就容易出现问题
#就比如如果用GBK编码写的内容,用BIG5打开就是乱码,不通用

针对这个问题,有个国际组织,专门收集了全世界大部分国家的语言文字,汇总做了一个大的字典并推行使用,以后统一用大字典就可以尽量避免乱码-->UTF-8(万国码)
    
核心点:
    1.目前世界上最主流的编码是<UTF-8> #大部分默认用UTF-8
    2.一个程序是用什么编码写的,你就要用对应的编码去读取,否则容易出问题

在程序中每个字都是有对应的序号

ord(字符)-->通过字符,找到序号
chr(序号)-->通过序号,找到字符
print(ord('A'))
print(ord('B'))
print('A'>'B')
print(chr(98))
print(chr(100))

有什么问题欢迎随时评论或者私信哦~

标签:info,知识点,Python,--,键值,print,集合,字典
From: https://blog.csdn.net/2401_83315133/article/details/140642752

相关文章

  • 3Dmax安装包+安装步骤+视频学习教程 百度云盘分享
    不得不承认,3dsMax和Cinema4D是目前最受欢迎的两款3D建模和动画软件。这两个软件程序都受到了专业人士的欢迎,特别是在其功能和工作流程理念非常适合的领域。它们各自都有自己独特的特性和功能,今天主要与大家一起熟悉和学习3Dmax这款工具。毫无疑问,3dsMax是一款功能强大的3D......
  • 数字信号||用窗函数法设计FIR数字滤波器(5)
    实验五  用窗函数法设计FIR数字滤波器一、实验目的(1)加深对窗函数法设计FIR数字滤波器的基本原理的理解。(2)学习用MATLAB语言的窗函数法编写设计FIR数字滤波器的程序。(3)了解MATLAB有关窗函数法设计的常用子函数。二、实验涉及的MATLAB子函数1.boxcar功能:矩形窗。......
  • Python入门知识点 6--序列类型的方法
    1、初识序列类型方法序列类型的概念:数据的集合,在序列类型里面可以存放任意的数据也可以对数据进行更方便的操作这个操作就是叫增删改查(crud)(增加(Creat),读取查询(Retrieve),更新(Update),删除(Delete)几个单词的首字母简写)增删改查是操作数据最底层的操作(从本质......
  • 数据库入门知识点 1--初识MySQL数据库
    1、数据库(1)json,wps,txt,md,···都是保存文本数据的(数据交互麻烦,数据安全问题)(2)列表,元组,字典,集合,···(保存临时的数据,对数据进行处理的时候保存。)银行卡----存入的钱(不允许随意修改的)游戏的数据-----数据不存档--没有安全保障----第二天就会回到解放前。(3)使用专门的数据库......
  • 数字信号||离散序列的基本运算(2)
    实验二  离散序列的基本运算一、实验目的(1)进一步了解离散时间序列时域的基本运算。(2)了解MATLAB语言进行离散序列运算的常用函数,掌握离散序列运算程序的编写方法。二、实验涉及的MATLAB子函数1.find功能:寻找非零元素的索引号。调用格式:find((n>=min(n1))&(n<=max(n1)......
  • 数字信号||离散序列的基本运算(1)
    实验一 离散序列的基本运算一、实验目的(1)了解常用的时域离散信号及其特点。(2)掌握MATLAB产生常用时域离散信号的方法。二、实验涉及的MATLAB子函数1.axis功能:限定图形坐标的范围。调用格式:axis([x1,x2,y1,y2]);在横坐标起点为x1、终点为x2,纵坐标起点为y1、终点为y2的范围......
  • 微信小游戏0基础学习记录:1.起步-制作简单游戏的新手引导(完成)
     前情提要: 微信小游戏0基础学习记录:0.一些准备知识&起步 上一篇博客介绍到了官方教程“制作简单游戏的新手引导”的第一阶段,“创建并编译3D场景”。这一篇将继续完成新手引导的剩余内容,包括2D场景的创建与编辑、游戏项目的播放与构建等等。官方文档:快速上手|微信开放......
  • 【UDS诊断协议:ISO-14229中文】【嵌入式车载测试收徒】
    每日直播时间:(直播方式:腾讯会议)周一到周五:20:00-23:00周六与周日:9:00-17:00                 进腾讯会议学习的,可以关注我并后台留言直播内容:(车厂真实项目实操测试)HIL(硬件在环)测试、UDS功能诊断、UDS自动化诊断、数据库制作、DTC故障制造、CAN......
  • 学生信息管理系统详细设计文档
    一、设计概述学生信息管理系统是一个用于管理学生信息的软件系统,旨在提高学校对学生信息的管理效率。本系统主要包括学生信息管理、课程信息管理、成绩信息管理、班级信息管理等功能模块。详细设计阶段的目标是确定各个模块的实现算法,并精确地表达这些算法,以及设计各模块的内......
  • 图像透视变换技术
    文章目录概要技术原理实现步骤总结透视变换矩阵的通用性小结概要图像透视变换(PerspectiveTransformation)是计算机视觉中一种重要的图像变换方法,它可以将图像从一个视角投影到另一个视角,从而改变图像的几何形状。透视变换常用于矫正图像的透视失真、图像配准、生成......