字典、元组、集合的内置方法
字典内置方法
dic = {
'name' : 'jason'
'age' : 10
'hobbies': ['play game', 'basketball']
}
1. 字典只按K取值 k不存在会直接报错
print(dic['name']) # 输出为 : jason
print(dic['jason']) # 报错
2. 按K修改值:新增键值对
dic['name'] = 'jason2' # 键存在则修改值
print(dic) # 输出结果 jason转换为jason2
dic['hobbies'].append('read')
print(dic) # 可在字典中的列表添加值
dic['pwd'] = 111
print(dic) # 如果键不存在则添加键值对 'pwd' : 111
3. 统计字典内部键值对的个数
print(len(dic))
4. 成员运算 默认只暴露K
print('jason' in dic) # 因只暴露K则返回为False
print('name' in dic) # 返回为True
5. 删除元素
del dic['name'] #通过K直接删除对应的K:V键值对
方式二:指定K 然后弹出键值对
print(dic.pop('age'))
print(dic)
6. 获取V值
print(dic['name']) # 键存在 输出为jason 按K取值不建议使用
print(dic['sdsd']) # 键不存在 报错
print(dic.get('name')) #jason
print(dic.get('sssd')) # 键不存在 但不会报错 返回None
print(dic.get('name', 'gary')) # K存在 则直接返回jason
print(dic.get('xxx', 'gary')) # 第二个参数 可以在K不存在的时候自定义返回信息
7. keys() values() items() 在python2 中为列表 在python3中时迭代器
print(dic.keys()) # 输出为:dict_keys(['name', 'age', 'hobbies]) 获取字典中所有的键 看作为列表
print(dic.values()) # 输出为:dict_values(['jason', 10, ['play game', 'basketball']]) 获取字典中所有点值 看作为列表
print(dic.items()) # 输出为:dict_items([('name', 'jason'), ('age', 10), ('hobbies', ['play game', 'basketball'])]) 获取字典中所有的键值对 看作为列表由多个元组组成 元组内有两个元素第一个为K第二个为V
![](https://img2020.cnblogs.com/blog/2608117/202111/2608117-20211109215427796-838364714.png)
字典拓展方法
dic = {
'name' : 'jason'
'age' : 10
'hobbies': ['play game', 'basketball']
}
1. 更新字典 : 键存在则修改,键不存在则创建
dic.update({'name': 'jason2', 'pwd': '111'})
print(dic) # 输出为:{'name': 'jason2', 'age': 10, 'hobbies': ['play game', 'basketball'], 'pwd': '111'}
2. 初始化字典
print(dict.fromkeys(['k1', 'k2', 'k3'],[])) # 输出为:{'k1': [], 'k2': [], 'k3': []}
"""
res = dict.fromkeys(['k1', 'k2', 'k3'],[]))
res['k1'].append(111)
res['k2'].append(222)
res['k3'].append(333)
print(res)
res['k1'].append(123)
print(res)
"""
输出为:
{'k1': [111, 222, 333], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}
{'k1': [111, 222, 333, 123], 'k2': [111, 222, 333], 'k3': [111, 222, 333]}
3. 当键存在的情况下 不修改而是获取键对应的值
print(dic.setdefault('name', 'jason'))
输出为 : jason
当键不存在的情况下 新增一对键值对 只返回键值对的值
print(dic.setdefault('name2','gary'))
输出为: gary
元组的内置方法
# 元组:小括号括起来 ,内部有多个元素,元素与元素之间用逗号隔开,元素可为任意数据类型,但是元组不支持修改, 也可以简单的认为它是一个不可变的列表
# 类型转换 :能够支持for循环的数据都可以转换成元组
print(tuple(111)) # 报错
print(tuple(1.123)) # 报错
print(tuple('hello')) # 输出为: ('h', 'e', 'l', 'l', 'o')
print(tuple([1,2,3])) # 输出为 :(1, 2, 3)
print(tuple({'name':'jason', 'pwd': 123}) # 输出为:('name', 'pwd')
## 笔试题
t1 = (111)
t2 = (2.22)
t3 = ('hello')
'''元组中元素后需要加逗号 哪怕只有一个元素'''
print(type(('111,')))
t = (111, 222, 333, 444, 555)
1. 索引取值
print(t[2]) # 输出额外 333
print(t[-1]) # 输出为 555
2. 切片操作
print(t[1:5]) # 顾头不顾尾 输出为: (222, 333, 444, 555)
priny(t[:]) # 从索引0到索引5 输出为: (111,222, 333, 444, 555)
3. 步长
print(t[1:5:2]) # 输出为: (222,444)
4. 统计元组内元素的个数
print(len(t)) # 输出为 5
5.for 循环
for i in t:
print(i) # 循环打印t的值 111 222 333 444 555
6. count计数
print(t.count(111)) # 统计111出现的次数 输出为:1
# 习题
t1 = (111, 222, [11, 22, 33])
t1[2].append(44)
print(t1) #输出为:(111, 222, [11, 22, 33, 44])
![](https://img2020.cnblogs.com/blog/2608117/202111/2608117-20211109215510040-1452259721.png)
集合去重操作
1. 定义空集合需要使用关键字set
s1 = set()
2. 类型转换 能够支持for循环的数据类型都可以转成集合(元素要为不可变类型)
# 去重
s1 = {1, 2, 2, 2, 3, 4, 3, 4, 3, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3}
print(s1) # 判断为集合形式 直接去重输出 {1, 2, 3, 4}、
name_list = ['jason', 'jason', 'jack', 'jack', 'kevin', 'jason']
s1 = set(name_list) # 先将 name_list 转换为集合
l1 = list(s1) # 再将去重后的集合转换为列表
print(l1) # 输出为: ['jason', 'jack', 'kevin']
# 练习题
去重并保留原来的顺序 (转为集合后会自动排序)
s1 = [1, 2, 2, 2, 3, 4, 3, 4, 3, 1, 2, 3, 2, 1, 2, 3, 2, 1, 2, 3]
s2 = []
for i in s1: # for循环输出s1列表
if i not in s2: # 判断循环输出的i在不在s2中
s2.append(i) # 如果不在 在s2依次添加
print(s2)
#输出为;[4, 1, 2, 3]
集合的关系运算
# 关系运算
'''两个群体之间做差异比较'''
friends1 = {'jason', 'jack', 'gary', 'kevin'}
friends2 = {'xxx', 'www', 'jason', 'jack'}
1. 求两个用户的共同好友
print(friends1 & friends2) # 输出为: {'jason', 'jack'}
2. 求两个用户所有的好友
print(friends1 | friends2) # 输出为: {'jason', 'jack', 'gary', 'kevin', 'xxx', 'www'}
3. 求用户1独有的好友:
print(friends1 - friends2) # 输出为: {'gary','kevin'}
4. 求用户2独有的好友:
print(friends2 - friends1) # 输出为 {'xxx', 'www'}
5. 求用户1 和 用户2 各自的好友
print(friends1 ^ friends2) # 输出为 {'kevin', 'gary', 'xxx', 'www'}
6. 父集与子集
s1 = {11, 22, 33, 44}
s2 = {11, 22}
print(s1 > s2) # 返回为True
s3 = {55}
print(s1 > s2) # 返回为Flase
![](https://img2020.cnblogs.com/blog/2608117/202111/2608117-20211109215626808-1451519203.png)