字典、元祖、集合相关方法

字典相关操作

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

image

# 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)
输出的结果:

image

# 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)
 '''当第二个公共值是可变类型的时候 一定要注意 通过任何一个键修改都会影响所有'''
 # 输出如下:

image

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)
posted @ 2022-09-30 17:33  passion2021  阅读(41)  评论(0编辑  收藏  举报