今日分享
- 字典相关操作
- 元组相关操作
- 集合相关操作
- 字符编码(理论)
字典相关操作
1.类型转换
dict()
字典的转换一般不使用关键字 而是靠自己手动转
2.必须要学的操作
u_dict = {
'name':'wei',
'password':3472,
'hobby':['baskertball','swimming']
}
2.1.按k取值(不推荐使用)
print(u_dict['username']) # 输出wei
print(u_dict['phone'])
2.2 按内置方法get取值(推荐使用)
print(u_dict.get('username')) # wei
print(u_dict.get('age')) # None
print(u_dict.get('name', '没有哟 嘿嘿嘿'))
# wei 键存在的情况下获取对应的值
print(u_dict.get('phone', '没有哟 嘿嘿嘿'))
# 键不存在默认返回None 但是可以通过第二个参数自定义
2.3 修改数据值
print(id(u_dict)) # 2274169855864
u_dict['name'] = 'tony'
print(id(u_dict)) # 2274169855864
print(u_dict)
# 'name': 'tony', 'password': 3472, 'hobby': ['baskertball', 'swimming']}
2.4 新增键对值
u_dict['age'] = 18 # 键不存在则新增键值对
print(u_dict)
2.5 删除数据
del u_dict['name']
print(u_dict)
# {'password': 3472, 'hobby': ['baskertball', 'swimming'], 'age': 18}
res = u_dict.pop('password')
print(u_dict) # {'hobby': ['baskertball', 'swimming'], 'age': 18}
print(res) # 3472
2.6 统计字典中键值对的个数
print(len(u_dict)) # 3
2.7 字典三剑客
print(u_dict.keys()) #一次性取所有的键
# dict_keys(['name', 'password', 'hobby'])
print(u_dict.values()) # 一次性获取字典所有的值
#dict_values(['wei', 3472, ['baskertball', 'swimming']])
print(u_dict.items())
#dict_items([('name', 'wei'), ('password', 3472), ('hobby', ['baskertball', 'swimming'])])
for i in u_dict.items():
k,v = i
print(k, v)
2.8 补充
print(dict.fromkeys(['name', 'pwd', 'hobby'], 123))
# {'name': 123, 'pwd': 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)
'''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
# res = user_dict.setdefault('username','tony')
# print(user_dict, res) # 键存在则不修改 结果是键对应的值
# res = user_dict.setdefault('age',123)
# print(user_dict, res) # 存不存在则新增键值对 结果是新增的值
user_dict.popitem() # 弹出键值对 后进先出
元组相关的操作
1.类型转换
tuple()
ps:支持for循环的数据类型都可以转成元组
2.元组必须掌握的方法
t1 = (11, 22, 33, 44, 55, 66)
# 1.索引取值
print(t1[0])
# 2.切片操作
print(t1[:])
print(t1[0:4])
print(t1[:-4])
# 3.间隔、方向
print(t1[0:6:2]) # (11, 33, 55)
print(t1[::-2]) # (66, 44, 22)
# 4.统计元组内数据值的个数
print(len(t1)) # 6
# 5.统计元组内某个数据值出现的次数
print(t1.count(11))
# 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.关系运算
群体之间做差异化校验
两个微信账户之间 有不同的好友 有相同的好友
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.编码与解码
编码:将人类的字符按照指定的编码编码成计算机能够读懂的数据
字符串.encode()
解码:将计算机能够读懂的数据按照指定的编码解码成人能够读懂
bytes类型数据.decode()
3.python2与python3差异
python2默认的编码是ASCII
1.文件头
# encoding:utf8
2.字符串前面加u
u'你好啊'
python3默认的编码是utf系列(unicode)
作业
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]
l1 = [2, 3, 2, 1, 2, 3, 2, 3, 4, 3, 4, 3, 2, 3, 5, 6, 5]
l2 = []
for l3 in l1:
if l3 not in l2:
l2.append(l3)
print(l2)
标签:内置,name,22,python,res,元组,学习,dict,print
From: https://www.cnblogs.com/wei0919/p/16745505.html