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()

———————————————————————————————————————————————————————————————————————————

                                                                                                                         无敌小马爱学习

 

posted on 2025-09-17 15:03  马俊南  阅读(6)  评论(0)    收藏  举报