python学习之数据内置

image

今日分享

  • 字典相关操作
  • 元组相关操作
  • 集合相关操作
  • 字符编码(理论)

字典相关操作

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)


# 有如下两个集合,pythons是报名python课程的学员名字集合
# ,linuxs是报名linux课程的学员名字集合
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
# 1. 求出即报名python又报名linux课程的学员名字集合
print(pythons & linuxs)
# 求出所有报名的学生名字集合
print(pythons | linuxs)
#求出只报名python课程的学员名字
print(pythons - linuxs)
# 4. 求出没有同时这两门课程的学员名字集合
print(pythons ^ linuxs)


# 4.统计列表中每个数据值出现的次数并组织成字典战士
# 	eg: l1 = ['jason','jason','kevin','oscar']
#       结果:{'jason':2,'kevin':1,'oscar':1}
# 	真实数据
#     	l1 = ['jason','jason','kevin','oscar','kevin','tony','kevin']
l1 = ['jason', 'jason', 'kevin', 'oscar', 'kevin', 'tony', 'kevin']
d4 = {}
l2 = tuple(l1)
for l3 in l2:
    d4[l3] = l2.count(l3)
print(d4)
posted @ 2022-09-30 17:44  性格如此w  阅读(35)  评论(0)    收藏  举报