今日内容详细
- 字典相关操作
- 元组相关操作
- 集合相关操作
- 字符编码理论
- 字符编码实操
- 练习题及答案
1.数据类型字典内置方法
1.类型转换
dict()
字典的转换一般不使用关键字
而是自己动手转
2.字典必须要掌握的操作:
取值方法1: # 按K取值(不推荐)
uesr_dict = {'username':'jason','hobby':555,'info':'buy'}
print(user_dict['username']) # jason
print(user_dict.get('some')) # 如果按K取值 k不存在就会报错
# 因为字典是无序的 所以不能按照索引取值!
取值方法2: # 内置方法.get()
print(user_dict.get('info')) # buy
print(user_dict.get('some')) # None 字典如果没有能取到的值就会直接返回None
print(user_dict.get('some','这个值不在这里请换一个哦')) # 如果取不到值可以通过第二个参数自定义返回内容
修改数据值:
user_dict['username'] = 'tony' # 如果K存在 那么直接修改值的数据
user_dict['baby'] = 'tom' # 如果K不存在 那么直接添加 相应的K V
print(user_dict.get('baby')) # tom
3.删除数据:
1.del user_dict['username']
print(user_dict) # {'hobby': 555, 'info': 'buy', 'baby': 'tom'}
2.pop方法
print(user_dict.pop('info')) # 取pop方法移除的键的值
print(user_dict) # {'hobby': 555, 'baby': 'tom'}
4.统计字典中键值对的数量
len()
print(len(user_dict)) # 取出的是整数
5.字典三剑客:
1..keys()
data = user_dict.keys() # 获取字典中所有的键
print(data) # dict_keys(['username', 'hobby', 'info'])
2..values()
data = user_dict.values() # 获取字典中所有的值
print(data) # dict_values(['jason', 555, 'buy'])
3..items()
data = user_dict.items()
print(data) # dict_items([('username', 'jason'), ('hobby', 555), ('info', 'buy')])
for k,v in user_dict.items():
print(k,v) #username jason hobby 555 info buy for循环取值并解压赋值给k,v
8. 补充说明:
快速生成 值相同的字典
print(dict.fromkeys(['username','hobby','sex','height'],667))
# {'username': 667, 'hobby': 667, 'sex': 667, 'height': 667}
data = dict.fromkeys(['username','hobby','sex','height'],[])
print(data)
# {'username': [], 'hobby': [], 'sex': [], 'height': []}
data['username'].append('jason')
data['hobby'].append(559)
# {'username': ['jason', 559], 'hobby': ['jason', 559], 'sex': ['jason', 559], 'height': ['jason', 559]}
直接乱了!
'''使用此方法当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
print(user_dict.setdefault('username', 'tony'))
print(user_dict) # 存在即不变
# res = user_dict.setdefault('username','tony')
# print(user_dict, res) # 键存在则不修改 结果是键对应的值
# res = user_dict.setdefault('age',123)
# print(user_dict, res) # 存不存在则新增键值对 结果是新增的值
# user_dict.popitem() # 弹出键值对 后进先出
2.数据类型元组内置方法
1.类型转换()
tuple() # 支持for循环的数据类型都可以转换成元组
2.元组必须掌握的方法
t1 = [11,222,33,55,88,77,66,999,885]
与字符串 列表 相同
# 1.索引取值
# 2.切片操作
# 3.间隔、方向
# 4.统计元组内数据值的个数
1.计算元组内数据值的个数:(字符串 列表)
.len()
print(len(t1)) # 9
2.计算数据出现在元组中的次数
.count
print(t1.count(88)) # 1次 如果count()中的数据 在元组中没出现会输出0
3.找出元组内指定数据值的索引值
.index()
print(t1.index(222)) # 1
4.元组内如果只有一个数据值需要在后面加一个逗号让它并保持元组的数据类型
5.元组内索引值绑定的数据值这个关系不可以被修改
6.元组内不能新增数据以及删除数据
3.数据类型集合内置方法
1.类型转换()
set()
集合内数据必须是不可变类型的(字符串、整形、字符串、元组)
集合内的数据是无序的,不能用索引取值
2.我们使用集合主要是用来
# 去重以及关系运算
# 如果我们没有以上的两种需求就不需要使用集合
1.去重:
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) # [33, 11, 22] 去重后的结果
'''集合的去重无法保留原先数据的排列顺序'''
2.关系运算:
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) # False
print(f1 < f2) # False
4.字符编码理论及实操
'''
我们知道计算机只能识别0/1,所以我们如果想让计算机能输出我们想要的字母或者文字,我们就需要把0/1二进制组合进行一些编排,让它对应上我们生活中的字母以及文字。
相当于我们的文字与二进制是由一种对应的关系 比如我输入 你 那么计算机会把编码本的对应关系 进行一个对照
'''
# 注意事项:以某个编码的形式进行保存文件,以后就要以这种编码去打开这个文件。否则就会出现乱码。
字符编码实战:
1.针对乱码不要慌 切换编码慢慢试即可
2.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2:
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
python2默认的编码是ASCII
5.练习题及答案
1.优化员工管理系统
拔高: 是否可以换成字典或者数据的嵌套使用完成更加完善的员工管理而不是简简单单的一个用户名(能写就写不会没有关系)
2.去重下列列表并保留数据值原来的顺序
eg: [1,2,3,2,1] 去重之后 [1,2,3]
l1 = [2,3,2,1,2,3,2,3,4,3,4,3,2,3,5,6,5]
3.有如下两个集合,pythons是报名python课程的学员名字集合,linuxs是报名linux课程的学员名字集合
pythons={'jason','oscar','kevin','ricky','gangdan','biubiu'}
linuxs={'kermit','tony','gangdan'}
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合
4.统计列表中每个数据值出现的次数并组织成字典战士
eg: l1 = ['jason','jason','kevin','oscar']
结果:{'jason':2,'kevin':1,'oscar':1}
真实数据
l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
标签:username,jason,数据类型,元组,dict,user,print,字典
From: https://www.cnblogs.com/ddsuifeng/p/16745817.html