字典、元祖、集合相关方法
字典相关操作
1.类型转换
可以使用dict()
方法,但是不建议使用,而是用其他方式转换。
print(dict((('name','pwd'),('tifa','123')))) # {'name': 'pwd', 'tifa': '123'}
# 使用麻烦
2.字典必须要掌握的操作
user_dict = {
'username': 'tifa',
'password': 123,
'hobby': ['read', 'music', 'run']}
# 1.使用字典的键取值(不推荐使用)
# 如果字典中没有这个键会直接报错
print(user_dict['username']) # tifa
# 2.使用字典的内置方法get取值:(推荐使用)
print(user_dict.get('username')) # tifa
# 当字典中没有这个键时,get方法会返回None
print(user_dict.get('age', '没有年龄')) # 可以给get方法传入第二个参数,当键存在时获取键对应的值 ,当键不存在时返回 '没有年龄'。
# 3.修改字典的值
user_dict['username'] = 'tony'
# 键存在时,将值修改为'tony'
# 4.新增键值对:
user_dict['username'] = 'tony'
# 键不存在在时,新增键值对'username':'tony'
# 5.删除键值对
del user-dict['username'] # 删除'username'键对应的键值对
# 如果字典中没有这个键会报错 KeyError
user_dict.pop('password')
# 跟列表的弹出方法相同 只不过是删除了键值对
# 6.统计字典中键值对的个数
print(len(user_dict)) # 3
# 7.字典重要方法 字典三剑客
print(user_dict.keys())
# 一次性获取字典所有的键 dict_keys(['username', 'password', 'hobby'])
print(user_dict.values())
# 一次性获取字典所有的值 dict_values(['jason', 123, ['read', 'music', 'run']])
print(user_dict.items())
# 一次性获取字典的键值对数据 dict_items([('username', 'jason'), ('password', 123), ('hobby', ['read', 'music', 'run'])])
for i in user_dict.items(): # 和for循环组合使用
k, v = i
print(k, v)
输出的结果:
# 8.补充说明
print(dict.fromkeys(['name', 'pwd', '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)
'''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
# 输出如下:
user_dict = {
'username' : 'tifa'
}
res = user_dict.setdefault('username','tony')
print(user_dict, res) # 键存在则不修改 结果是键对应的值 res --> 'tifa'
res = user_dict.setdefault('age',123) # 这里添加了键值对 'age': 123
print(user_dict, res) # 存不存在则新增键值对 结果是新增的值 res --> 123
user_dict.popitem() # 弹出键值对 后进先出
print(user_dict) # {'username': 'tifa'}
元祖相关操作
1.类型转换
可以使用tuple()
方法转换。
支持for循环的数据类型都可以转成元祖。元祖内必须是不可变对象。
2.元祖必须掌握的方法
t1 = (11, 22, 33, 44, 55, 66)
# 1.索引取值
# 2.切片操作
# 3.间隔、方向
# 4.统计元组内数据值的个数
# print(len(t1)) # 6
# 5.统计元组内某个数据值出现的次数
# print(t1.count(11))
# 6.统计元组内指定数据值的索引值
# print(t1.index(22))
# 7.元组内如果只有一个数据值那么逗号不能少
# 8.元组内索引绑定的内存地址不能被修改(注意区分 可变与不可变)
# 9.元组不能新增或删除数据
集合相关操作
1.类型转换
set()
集合内数据必须不可变类型
集合内数据是无序的 没有索引的概念
2.集合仅仅在以下情况下使用:
去重、关系运算
3.去重
s1 = {11,22,11,22,11,22}
print(s1) # {11,22}
l1 = [11,11,22,11,22,33,43]# 列表去重
s1 = set([11,22,11,22,[11,22]]) # 这种转不了
4.关系运算
群体之间做差异化校验 数学中的交集并集。
1.求两个人的共同好友
f1 & f2 交集
f1 - f2 集合相减
f1 | f2 并集
求两个各自独有的好友:
f1 ^ f2
父集子集的概念:
print(f1 > f2) # f1是否包含f2
print(f1 < f2) # f1是否是f2的子集 # 符号的单词是哪个
# 例子:
pythons = {'jason', 'oscar', 'kevin', 'ricky', 'gangdan', 'biubiu'}
linuxs = {'kermit', 'tony', 'gangdan'}
'''
1. 求出即报名python又报名linux课程的学员名字集合
2. 求出所有报名的学生名字集合
3. 求出只报名python课程的学员名字
4. 求出没有同时这两门课程的学员名字集合'''
print(pythons & linuxs)
print(pythons | linuxs)
print(pythons - linuxs)
print(pythons ^ linuxs)