数据类型内置方法下 字典、元组、集合、字符编码理论

+数据类型内置方法下 字典、元组、集合、字符编码理论

§一、字典的内置方法

1、字典的类型转换dict()

# 语句
dict()
字典的转换一般不使用关键字,而是自己手动转换
# 举例
a = [['jack', 123],['uzi', 123]]
res = dict(a)
print(res)
可以看出来字典的转换在格式上有很多限制,所以一般不用

2、字典相关操作

1.按key取值(不推荐使用)

# 语句
字典名['k值']
lpl = {
'tes': 'jackeylove',
'jdg': 369,
'edg': ['viper', 'meiko', 'scout']
}
print(lpl['tes']) # jackeylove 存在则正常输出
print(lpl['rng']) # 不存在该键则正常报错

2.按内置方法get取值(推荐使用)

# 语句
字典+ .get('要取的values的keys')
1.正确取值
print(lpl.get('edg'))
------------------
['viper', 'meiko', 'scout']
2.要取的keys不存在 # 返回None
print(lpl.get('rng'))
------------------
None
3.进阶用法
字典+ .get('要取的values','当不存在对应的keys时返回这串字符')
print(lpl.get('edg','当不存在对应的keys时返回这串字符'))
print(lpl.get('rng','当不存在对应的keys时返回这串字符'))
------------------
['viper', 'meiko', 'scout']
当不存在对应的keys时返回这串字符

3.修改数据值

# 语句
字典['要改变values的keys'] = '要改变的values'
当要改变的键存在 # 会直接改变这个键的数据值
print(id(lpl))
lpl['tes'] = 'knight'
print(lpl)
print(id(lpl))
------------------
4367933568
{'tes': 'knight', 'jdg': 369, 'edg': ['viper', 'meiko', 'scout']}
4367933568

4.新增键值对

# 语句
字典['要增加的keys'] = '要增加的values' # 会直接在字典末尾增添新的键值对
lpl['rng'] = 'knight'
print(lpl)
------------------
{'tes': 'jackeylove', 'jdg': 369, 'edg': ['viper', 'meiko', 'scout'], 'rng': 'knight'}

5.删除数据del 、pop

1.del
# 语句
del +字典['要删除的keys']
del lpl['tes']
print(lpl)
------------------
{'jdg': 369, 'edg': ['viper', 'meiko', 'scout']}
2.pop 弹出
字典.pop('要弹出的keys')
a = lpl.pop('tes')
print(lpl)
print(a)
------------------
{'jdg': 369, 'edg': ['viper', 'meiko', 'scout']}
jackeylove
3.popitem
popitem() 用来随机删除一个键值对
print(lpl1.popitem())
-----------------
('edg', ['viper', 'meiko', 'scout'])

6.统计字典中键值对的个数 len()

len(要统计的字典) # 输出的数字
print(len(lpl)) # 3

7.字典三剑客

  • 一次性获取字典所有的
字典.keys()
print(lpl.keys())
------------------
dict_keys(['tes', 'jdg', 'edg'])
  • 一次性获取字典所有的
字典.values()
print(lpl.values())
------------------
dict_values(['jackeylove', 369, ['viper', 'meiko', 'scout']])
  • 一次性获取字典的键值对数据
字典.items()
print(lpl.keys())
------------------
dict_items([('tes', 'jackeylove'), ('jdg', 369), ('edg', ['viper', 'meiko', 'scout'])])

8.补充说明

  • fromkeys生成相同数据值不同键的字典
# 语句
dict.fromkeys(['要生成的列表的keys'], 要生成的数据值values)
# 这里生成的可以是不同的键,但他们内的值都是相同的,相当于把一个数据值赋值给不同的键
print(dict.fromkeys(['faker','chovy','ruler'],123))
res = dict.fromkeys(['faker','chovy','ruler'],[])
print(res)
------------------
{'faker': 123, 'chovy': 123, 'ruler': 123}
{'faker': [], 'chovy': [], 'ruler': []}
  • append 为数据值为空列表的时候添加数据值
'''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
lpl = {'tes':[],'edg':[], 'jdg':[]}
lpl['tes'].append('jason')
lpl['edg'].append(123)
lpl['jdg'].append('study')
print(lpl)
------------------
{'tes': ['jason'], 'edg': [123], 'jdg': ['study']}
  • detdefault 默认值 None
setdefault() 方法用来返回某个 key 对应的 value
当指定的 key 不存在时,setdefault() 会先为这个不存在的 key 设置一个默认的 defaultvalue,然后再返回 defaultvalue。
也就是说,setdefault() 方法总能返回指定 key 对应的 value:
1.如果该 key 存在,那么直接返回该 key 对应的 value;
2.如果该 key 不存在,那么先为该 key 设置默认的 defaultvalue,然后再返回该 key 对应的 defaultvalue。
a = {'数学': 95, '语文': 89, '英语': 90}
print(a)
#key不存在,指定默认值
a.setdefault('物理', 94)
print(a)
#key不存在,不指定默认值
a.setdefault('化学')
print(a)
#key存在,指定默认值
a.setdefault('数学', 100)
print(a)
------------------
{'数学': 95, '语文': 89, '英语': 90}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94, '化学': None}
{'数学': 95, '语文': 89, '英语': 90, '物理': 94, '化学': None}

§二、元组的内置方法

1、类型转换

# 语句
tuple() 支持for循环的数据类型都可以转换为元组

2、元组必须掌握的方法

1.索引取值、切片间隔

1.索引取值
元组[索引值]
# 其中 索引值可以是正数也可以是负数 ,负数代表了方向从右往左
2.切片间隔
元组[起始索引:结束索引:步长step]

2.统计元组内数据值的个数len

tup = (11, 22, 11, 22, 33, 44, 55, 123, 123, 321)
print(len(tup))
------------------
10

3.统计元组内某个数据值出现的次数count

元组.count(数据值)
tup = (11, 22, 11, 22, 33, 44, 55, 123, 123, 321)
print(tup.count(11))
------------------
2

4.统计元组内制定数据值的索引值index

Index访问元组中的某个元素,得到的是这个元素的索引值
print(tup.index(22))
------------------
1

5.关于元组的注意要点

  • 元组内如果只要一个数据值那么逗号不能少
  • 元组内索引绑定的内存地址不能被修改(注意区分 可变与不可变)
  • 元组内不能新增或者删除数据

§三、集合的内置方法

1、类型转换

set()
# 集合内数据必须是不可变类型(整型、浮点型、字符串、元组)
# 集合内数据也是无序的,没有索引的概念

集合常常应于 去重和关心运算

2、set集合做交集、并集、差集运算

a7c532af84aeafc4fe414369a39a7730

运算操作 运算符 含义 例子
交集 & 取两集合公共的元素 set1 & set2
并集 | 取两集合全部的元素 set1 | set2
差集 - 取一个集合中另一集合没有的元素 set1 - set2 {1,2} set2 - set1
对称差集 ^ 取集合 A 和 B 中不属于 A&B 的元素 set1 ^ set2
1. 取交集 intersection()
set3 = set1.intersection()
2. 判断子集 issuperset()
set1.issuperset(set2) 判断 set2 是否是 set1 的子集
# 判断set1是否是set2的父集 输出值为布尔值
print(set1 > set2)
print(set1 < set2)

§四、字符编码理论

1、理论了解及发展史

1.字符编码只针对文本数据
2.回忆计算机内部存储数据的本质
3.既然计算机内部只认识01 为什么我们却可以敲出人类各式各样的字符
肯定存在一个数字跟字符的对应关系 存储该关系的地方称为>>>:字符编码本
4.字符编码发展史
4.1.一家独大
ASCII码:记录了英文字母跟数字的对应关系
# 用8bit(1字节)来表示一个英文字符
4.2.群雄割据
# 中国人
GBK码:记录了英文、中文与数字的对应关系
用至少16bit(2字节)来表示一个中文字符,很多生僻字还需要使用更多的字节,英文还是用8bit(1字节)来表示
# 日本人
shift_JIS码:记录了英文、日文与数字的对应关系
# 韩国人
Euc_kr码:记录了英文、韩文与数字的对应关系
"""
每个国家的计算机使用的都是自己定制的编码本,不同国家的文本数据无法直接交互 会出现"乱码"
"""
4.3.天下一统
# unicode万国码
兼容所有国家语言字符,起步就是两个字节来表示字符
# utf系列:utf8 utf16 ...
专门用于优化unocide存储问题,英文还是采用一个字节,中文三个字节

2、字符编码实操

1.当我们遇到乱码不要慌,切换编码试一试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
# 字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
# bytes类型数据.decode()
3.python2与python3差异
python2默认的编码是ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
posted @   Duosg  阅读(50)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示