今日内容概要
- 字典相关操作
- 元组相关操作
- 集合相关操作
- 字符编码(理论)
今日内容总结
今天主要讲了一些昨日剩下的数据类型的内置方法以及一些相关的操作,一共有,字典。元组.集合,等几个数据类型,其中字典和集合是最特殊的,字典转换一般不使用关键字,而是需要自己动手转,关于字典有几个必须要掌握的几个操作,如下:
1.字典必须要掌握的操作
user_dict ={
'username':'jason',
'password':'123',
'hobby':['read','muisc']
}
1.按k取值(不推荐使用)
print(user_dict['username']) # jason
print(user_dict['phone']) # k 不存在会直接报错
2.按内置方法get取值(推荐使用)
print(user_dict.get('username)') # jason
print (user_dict.get('age')) # None (在字典中没有找到该数据值)
print(user_dict.get('username','没有哟,嘿嘿嘿')) 键存在的情况下, 获取对应的值
print(user_dict.get('phon','没有哟,嘿嘿嘿')# 键不存在默认返回none,可以通过第二个参数自定义 # 没有哟,嘿嘿嘿
3.修改值数据
print(id(user_dict))
user_dict['username'] = 'tony' # 键存在则修改对应的值
print(id(user_dict))
print(user_dict)
4.新增键值对
user_dict['age'] = 18 # 键不存在则新增键值对
print(user_dict)# {'username': 'jason', 'password': 123, 'hobby': ['read', 'music', 'run'], 'age': 18}
5.删除数据
# del user_dict['username']
# print (user_dict) # {'password': 123, 'hobby': ['read', 'music', 'run']}
#
# res = user_dict.pop('password')
# print(user_dict) #{'username': 'jason', 'hobby': ['read', 'music', 'run']}
# print(res) #123 pop讲password的值给弹出但是还是能重新给一个变量名来使用它
6.统计字典中键值对的个数
# print(len(user_dict)) #3
7.字典三剑客
# 1)print(user_dict.keys()) #一次性获取字典所有的键 dict_keys(['username', 'password', 'hobby'])
# 2)print(user_dict.values()) #一次性获取字典所有的值dict_values(['jason', 123, ['read', 'music', 'run']])
# 3)print(user_dict.items()) #一次性获取字典的键值对数据 dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])])
# for i in user_dict.items():
# k, v = i \ for k.v in user_dict.items()
# print(i) print(k.v)
# # ('username', 'jason')
# ('password', 123)
# ('hobby', ['read', 'music', 'run'])
8.补充说明
# print(dict.fromkeys(['name','wpd','hobby'],123)) # 快速生成值相同的字典 {'name': 123, 'wpd': 123, 'hobby': 123}
#
# res = dict.fromkeys(['name','pwd','hobby'],[])
# # print(res) #{'name': [], 'pwd': [], 'hobby': []}
#
# res['name'].append('jason')
# res['pwd'].append(123)
# res['hobby'].append('study')
# print(res) #{'name': ['jason', 123, 'study'], 'pwd': ['jason', 123, 'study'], 'hobby': ['jason', 123, 'study']}
'''
当第二个公共值是可变类型的时候,一定要注意,通过任何一个键修改都会影响所有
'''
# res = user_dict.setdefault('username','tony')
# print(user_dict,res) # 键存在则不修改,结果是键对应的值 #{'name': ['jason', 123, 'study'], 'pwd': ['jason', 123, 'study'], 'hobby': ['jason', 123, 'study']}
# res = user_dict.stdefault('age',123)
# print(user_dict,res) #键不存在则新增键值对,接过是新增的值
# user_dict.popitem() #弹出键值对,后进先出
元组相关操作
类型转换
teple()
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
t1 = (11,22,33,44,55,66)
1.索引取值
2.切片操作
3.间隔,方向
4.统计元组内数据的个数
print(len(t1))# 6
5.统计元组内某个数据值出现的次数
print(t1.index(22))
6.统计元组内指定数据值的索引值
print(t1.index(22))
7.元组内如果只有一个数据值那么逗号不能少
8.元组内索引绑定的内存地址不能被修改(注意区分,可变与不可变)
9.元组不能新增或删除数据
集合相关操作
1.类型转换
set()
集合内数据必须是不可变类型(整型,浮点型,字符串,元组)
集合内数据也是无序的,没有索引的概念
2.集合需要掌握的方法
去重
关系运算
PS:只有遇到上述两种需求的时候才应该考虑使用集合
3.去重
s1 = {11, 22, 11, 22, 22, 11, 222, 11, 22, 33, 22}
l1 = [11, 22, 33, 22, 11, 22, 33, 22, 11, 22, 33, 22]
s1 = set(l1)
l1 = list(s1)
print(l1)
集合的去重无法保留原先数据的排列顺序
4.关系运算
群体之间做差异化效验
eg:两个微信账户之间,有不同的好友,有相同的好友
f1{'jason','tony',jerry','oscar'} #用户1的好友列表
f2 = {'jack', 'jason', 'tom', 'tony'} # 用户2的好友列表
1.求两个人的共同好友
# print(f1 & f2) # {'jason', 'tony'}
# 2.求用户1独有的好友
# print(f1 - f2) # {'jerry', 'oscar'}
# 3.求两个人所有的好友
# print(f1 | f2) # {'jason', 'jack', 'tom', 'tony', 'oscar', 'jerry'}
# 4.求两个人各自独有的好友
# print(f1 ^ f2) # {'oscar', 'tom', 'jack', 'jerry'}
# 5.父集 子集
print(f1 > f2)
print(f1 < f2)
字符编码理论
该知识点理论特别多,但是结论很少,代码使用也很短
1.字符编码只针对文本数据
2.回忆计算机内部存储数据的本质
3.既然计算机内部只认识01,为什么我们却可以敲出人类各式各样的字符
肯定定在一数字符的对应关系,存储该关系的地方称为:字符编码本
4.字符编码的的发展史
4.1一家独大
计算机是由美国人发明的,因为计算机只能识别0101这样的二进制数,为了能让计算机识别英文,所以发明了提个数字和英文字母的对应关系,
ASCLL码:记录了英文字母的对应关系
用8bit(1字节)来表示一个英文字符
4.2
那时候其他国家购买计算机,发现自己国家的语言计算机识别不了,这时候就发明了各种各样的能和计算机对应关系的编码
中国:
GBK码:记录了英文,中文与狮子的关系
用至少16bit(2字节)来表示一个中文字符
很多的生僻字还需要更多的字节来表示,但英文还是用8bit(1字节)来表示
日本
shift_JIS:记录了英文日文与数字的对应关系
韩国
Euc_kr:记录了英文,韩文与数字的对应关系
‘每个国家的计算机的使用都是自己定制的编码本,不同国家的文本数据无法直接交互,就会出现‘乱码’的现象’
有句古话说的好,天下合久必分,分久必合各个国家与国家之间需要传递信息,就出现了文字不同编码不同,在计算机上所表示出来的含义也有所不同,这时候就出现了方便各国之间能够都能使用的'unicode',万国码:
这个编码能够兼容
国家的语言文字,起步就是用两个字节来表示字符
但是除了编码的问题还出现了储存的问题,因为语言的不同,发送到每个国家的数据表现形式也不同,就有了utf系列;(utf_8,utf_16...)
用来优化unocide的储存问题,英文还是采用一个字节,中文使用三个字节
字符编码实操
1.针对乱码了不用慌,使用切换编码慢慢调试即可
、2.编码与解码
编码就是将人类的字符按照指定的编码编成计算机能够读懂的0101组成的二进数
语法 结构
字符串.encode
解码;将计算机能够读懂的数据按照人类能够读懂的数据进行解密
语法结构
bytes数据类型。decode()
小知识补充:
Python2与Python3在使用编码的差异
Python2默认的编码是ASCLL
1.文件头
2.字符串前面加u
u'你好'
Python3默认的编码是utf系列(Unicode)
关于今日所学知识点应该加以了解和掌握并能够熟练使用
标签:内置,jason,22,python,123,dict,user,print,操作
From: https://www.cnblogs.com/qiguanfusu/p/16746707.html