day07 课程(字典 & 字典常用操作 & 集合 & 集合常用操作)
课程:https://www.bilibili.com/video/BV1o4411M71o?spm_id_from=333.788.videopod.episodes&p=132
7.1 字典的应用场景
7.1.1 目标
字典的应用场景
创建字典的语法
字典的常见操作
字典的循环遍历
7.1.2 字典的应用场景
思考1:如果有多个数据,例如:'Tom','男',20,如何快速存储?
答:列表
name_list = ['Tom','男',20]
思考2:如何查找到数据 'Tom'?
答:查找到下标为 0 的数据既可
name_list[0]
思考3:如果将来数据顺序发生变化,如下所示:还能用 name_list[0] 访问到数据 'Tom' 吗?
name_list = ['男',20,'Tom']
答:不能,数据 'Tom' 此时下标为 2
思考4:数据顺序发生变化,每个数据的下标也会随之变化,如何保证数据顺序变化后能使用同一个标准查找数据呢?
答:字典,字典里面的数据是以键值对形式出现,字典数据和数据顺序没有关系,即字典不支持下标,后期无论数据如何变化,只需要按照对应的键的名字查找数据既可
7.2 创建字典的语法
7.2.1 字典特点
符号为 大括号
数据为 键值对 形式出现
各个键值对之间用 逗号 隔开
7.2.2 字典创建
(1)有数据的字典
# 1.有数据的字典 dict1 = {'name':'Tom', 'age':'18', 'gender':'男'} print(dict1) print(type(dict1)) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\02.创建字典的语法.py {'name': 'Tom', 'age': '18', 'gender': '男'} <class 'dict'> Process finished with exit code 0
(2)创建空字典
# 2.创建空字典 dict2 = {} # 第一种方法 dict3 = dict() # 第二种方法 print(dict2) print(type(dict2)) print(dict3) print(type(dict3)) ------------------------------------------------ 执行后 C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\02.创建字典的语法.py {} <class 'dict'> {} <class 'dict'> Process finished with exit code 0
7.3 字典常用操作之新增
写法:字典序列[key] = 值
注意:如果 key 存在则修改这个 key 对应的值,如果 key 不存在则新增此键值对
7.3.1 新增
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1)
dict1['id'] = 110 # 当 key 值不存在时,新增 key、value
print(dict1)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\03.字典常用操作之新增.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
{'name': 'Tom', 'age': '18', 'gender': '男', 'id': 110}
Process finished with exit code 0
7.3.2 修改
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1)
dict1['name'] = 'Rose' # 当 key值 存在有时,修改 key 对应 value
print(dict1)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\03.字典常用操作之新增.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
{'name': 'Rose', 'age': '18', 'gender': '男'}
Process finished with exit code 0
注意:字典为可变类型
7.4 字典常用操作之删除
7.4.1 del 删除
(1)del() 删除
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
del(dict1) # 删除字典
print(dict1) # 删除后,报错显示无字典
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\04.字典常用操作之删除.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
Traceback (most recent call last):
File "D:\Pycharm\code\day07\04.字典常用操作之删除.py", line 7, in <module>
print(dict1) # 删除后,报错显示无字典
^^^^^
NameError: name 'dict1' is not defined. Did you mean: 'dict'?
Process finished with exit code 1
(2)del 删除
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
del dict1['name'] # 删除字典中的某个key,字典中的某个 key 不存在时,会报错 KeyError
print(dict1) # 删除了字典中 的 key 以及 key 对应的 value
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\04.字典常用操作之删除.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
{'age': '18', 'gender': '男'}
Process finished with exit code 0
7.4.2 clear 清空
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
dict1.clear() # 清空字典中数据
print(dict1) # 剩余空字典
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\04.字典常用操作之删除.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
{}
Process finished with exit code 0
7.5 字典常用操作之修改
写法:字典序列[key] = 值
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
dict1['name'] = 'Lily+++' # 修改存在 key 的 value
print(dict1) # 打印更改后字典
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\05.字典常用操作之修改.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
{'name': 'Lily+++', 'age': '18', 'gender': '男'}
Process finished with exit code 0
注意:如果 key 存在则修改这个 key 对应的值,如果 key 不存在则新增此键值对
7.6 字典常用操作之查找
7.6.1 key 值查找
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
print(dict1['name']) # 查找叫 name 的 key 的 value 值
print(dict1['names']) # 查找叫 names 的 key 不存在, 报错 KeyError
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\06.字典常用操作之查找.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
Tom
Traceback (most recent call last):
File "D:\Pycharm\code\day07\06.字典常用操作之查找.py", line 6, in <module>
print(dict1['names'])
~~~~~^^^^^^^^^
KeyError: 'names'
Process finished with exit code 1
7.6.2 函数查找
(1)get()
语法:
字典序列.get(key, 默认值)
注意:如果当前查找的 key 不存在则返回第二个参数(默认值),如果省略第二个参数,则返回 None
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原列表
print(dict1.get('name')) # key 存在则返回 key 对应的 value, Tom
print(dict1.get('name', None)) # get 函数中默认值是 None,写不写 None 都一样
print(dict1.get('names')) # key 不存在时返回 None
print(dict1.get('names', None)) # 同样 get 函数中默认值是 None,写不写 None 都一样
print(dict1.get('names', '不存在')) # 可以修改默认值,当 key 不存在时返回修改后的默认值
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\06.字典常用操作之查找.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
Tom
Tom
None
None
不存在
Process finished with exit code 0
(2)keys()
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原列表
print(dict1.keys()) # 查找字典中的所有 key , 返回字典中key的可迭代对象
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\06.字典常用操作之查找.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
dict_keys(['name', 'age', 'gender'])
Process finished with exit code 0
(3)values()
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原列表
print(dict1.values()) # 查找字典中的所有 value , 返回字典中值的可迭代对象
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\06.字典常用操作之查找.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
dict_values(['Tom', '18', '男'])
Process finished with exit code 0
(4)items()
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原列表
print(dict1.items()) # 查找字典中所有键值对,返回可迭代对象, 即多个元组,每个元组中 角标1 是 key,角标2 是value
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\06.字典常用操作之查找.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
dict_items([('name', 'Tom'), ('age', '18'), ('gender', '男')])
Process finished with exit code 0
7.7 字典循环遍历之key
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
for key in dict1.keys():
print(key)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\07.字典循环遍历之key.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
name
age
gender
Process finished with exit code 0
7.8 字典的循环遍历之value
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
for value in dict1.values():
print(value)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\08.字典的循环遍历之value.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
Tom
18
男
Process finished with exit code 0
7.9 字典的循环遍历之键值对
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
for item in dict1.items(): # 遍历字典 items, 元组
print(item)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\09.字典的循环遍历之键值对.py
{'name': 'Tom', 'age': '18', 'gender': '男'}
('name', 'Tom')
('age', '18')
('gender', '男')
Process finished with exit code 0
7.10 字典的循环遍历之键值对(拆包)
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
print(dict1) # 打印原字典
for key,value in dict1.items(): # 对字典 items 中两个数据的元组进行拆分赋值
print(f"{key} = {value} ")
# print("%s = %s " % (key,value)) # 与上面效果相同
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\10.字典的循环遍历之键值对(拆包).py
{'name': 'Tom', 'age': '18', 'gender': '男'}
name = Tom
age = 18
gender = 男
Process finished with exit code 0
7.11 字典的总结
定义字典
dict1 = {'name':'Tom', 'age':'18', 'gender':'男'}
dict2 = {} # 第一种方法
dict3 = dict() # 第二种方法
常见操作
增、改
字典序列['key'] = 值 # key 存在修改,不存在则新增
查找
字典序列[key]
keys()
values()
items()
7.12 创建集合
7.12.1 目标
创建集合
集合数据的特点
集合的常见操作
7.12.2 创建集合
创建集合,可以使用 {} 或 set(),但是如果要创建 空集合 只能使用 set(),因为 {} 用来创建空字典
s1 = {10, 20, 30, 40, 50}
print(s1) # 打印集合 ,输出无序 , 所以不支持下标
print(type(s1)) # 打印集合数据类型
s2 = {10, 20, 30, 30, 20, 10, 40, 50} # 集合有去重功能,自动去重
print(s2)
s3 = set('abcdefg') # 自动将数据分割写入
print(s3)
s4 = set() # 创建空集合,创建空集合只能用 set()
print(type(s4))
s5 = {} # {} 是创建空字典
print(type(s5))
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\11.创建集合.py
{50, 20, 40, 10, 30}
<class 'set'>
{50, 20, 40, 10, 30}
{'a', 'e', 'd', 'g', 'c', 'f', 'b'}
<class 'set'>
<class 'dict'>
Process finished with exit code 0
7.13 集合常见操作之增加数据
7.13.1 add()
注意:因为集合有去重功能,所以当向集合内追加的数据是当前集合已有数据的话,则不进行任何操作
s1 = {10, 20, 30}
print(s1) # 输出原集合
s1.add(40) # 集合是可变类型, 无序, 任意位置
print(s1)
s1.add(20) # 集合自动去重, 追加数据重复,自动去重
print(s1)
# s1.add([40, 30, 20]) # add 对集合追加列表,报错 TypeError: unhashable type: 'list'
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\12.集合常见操作之增加数据.py
{10, 20, 30}
{40, 10, 20, 30}
{40, 10, 20, 30}
{10, 20, 30}
Process finished with exit code 0
7.13.2 update()
注意:update(),追加的数据是序列
s1 = {10, 20, 30}
print(s1) # 输出原集合
s1.update([40, 30, 20]) # update 可以追加列表到集合,集合自动去重
print(s1)
# s1.update(100) # update 不支持追加单一数据,报错: TypeError: 'int' object is not iterable
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\12.集合常见操作之增加数据.py
{10, 20, 30}
{40, 10, 20, 30}
Process finished with exit code 0
7.14 集合常见操作之删除数据
7.14.1 remove()
注意:remove(),删除集合中的指定数据,如果数据不存在则报错
s1 = {10, 20, 30, 40, 50}
print(s1) # 输出原集合
s1.remove(10) # 输出的集合中数据 10被删除
print(s1)
# s1.remove(100) # 删除数据不存在,报错:KeyError: 100
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\13.集合常见操作之删除数据.py
{50, 20, 40, 10, 30}
{50, 20, 40, 30}
Process finished with exit code 0
7.14.2 discard()
注意:discard(),删除集合中的指定数据,如果数据不存在也不会报错
s1 = {10, 20, 30, 40, 50}
print(s1) # 输出原集合
s1.discard(10) # 输出的集合中数据 10被删除
print(s1)
print("=============") # 分割线
s1.discard(100) # 删除的数据不存在 不报错
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\13.集合常见操作之删除数据.py
{50, 20, 40, 10, 30}
{50, 20, 40, 30}
=============
Process finished with exit code 0
7.14.3 pop()
注意:pop(),随机删除集合中的某个数据,并返回这个数据
s1 = {'10', '20', '30', '40'}
print(s1) # 输出原集合, 字符串str 是随机排序,所以可以随机删除, 数字int 排序会有顺序,一直删除末尾
del_num = s1.pop() # 随机删除, 删除的 字符串 可以用变量接收
print(s1)
print(del_num)
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\13.集合常见操作之删除数据.py
{'40', '10', '20', '30'}
{'10', '20', '30'}
40
Process finished with exit code 0
7.15 集合常见操作之查找数据
in:判断数据在集合序列,存在返回 True,不存在返回 False
not in:判断数据不在集合序列,不在返回 True,存在返回 False
s1 = {10, 20, 30, 40, 50}
print(s1)
print( 10 in s1) # 存在 True
print( 10 not in s1) # 是存在的, 所以返回False
------------------------------------------------ 执行后
C:\Users\马俊南\AppData\Local\Microsoft\WindowsApps\python3.13.exe D:\Pycharm\code\day07\14.集合常见操作之查找数据.py
{50, 20, 40, 10, 30}
True
False
Process finished with exit code 0
7.16 集合总结
创建集合
有数据集合
s1 = {数据1, 数据2, 数据...}
无数据集合
s1 = set() # 只能用 set() 创建
常见操作
增加数据
add()
update()
删除数据
remove()
disacrd()
———————————————————————————————————————————————————————————————————————————
无敌小马爱学习
浙公网安备 33010602011771号