Python基础(8):变量数据类型---神秘的“容器”集合和字典(set/dict)—详解
练习最大的收获就是先进行模仿,在发现问题,解决问题,最后掌握!
上一篇文章题目:Python基础(7):变量数据类型---神秘的“容器”列表和元组(list/tuple)—详解
链接:https://blog.csdn.net/2501_94250394/article/details/156279265?spm=1001.2014.3001.5501

前言
前面,介绍了容器的两种类型,今天我们来给小伙伴们介绍其余的两种容器类型---集合和字典,看看他们有哪些操作方法,是否和之前学到的内容有相同的知识点。
开始进入正题!!!
一、集合的定义与使用
1.1 集合的使用
集合(set)是一个无序的不重复元素序列:① 自动去重;② 无序
通俗来说就是不挑顺序,没有前后顺序,还容不下重复东西的小篮子
1.2 集合的定义
在Python中,使用一对花括号{}或者set()方法来定义集合,但是如果你定义的集合是一个空集合,则只能使用set()方法。
# 定义一个集合
s1 = {10, 20, 30, 40, 50}
print(s1)
print(type(s1))
# 定义一个集合:集合中存在相同的数据
s2 = {'刘备', '曹操', '孙权', '曹操'}
print(s2)
print(type(s1))
# 定义空集合
s3 = {}
s4 = set()
print(type(s3)) # <class 'dict'>
print(type(s4)) # <class 'set'>
# 原有一个列表,里面有重复元素
my_list = [10, 20, 30, 20, 10]
# 用 set() 转成集合
list_to_set = set(my_list)
print(list_to_set) # 运行结果(无序,自动去重):{10, 20, 30}
二、集合的相关操作
2.1 集合的增操作
add()方法:向集合中增加一个元素(单一)
students = set()
students.add('张三')
students.add('李四')
print(students)
2.2 集合的删操作
remove()方法:删除集合中的指定数据,如果数据不存在则报错。
# 1、定义一个集合
products = {'萝卜', '白菜', '水蜜桃', '奥利奥', '西红柿', '凤梨'}
# 2、使用remove方法删除白菜这个元素
products.remove('白菜')
print(products)
#元素不存在,进行删除,删除苹果
products.remove('苹果')
#查看打印结果,是否报错?
print(products)
2.3 集合中的查操作
① in :判断某个元素是否在集合中,如果在,则返回True,否则返回False
② not in :判断某个元素不在集合中,如果不在,则返回True,否则返回False
# 定义一个set集合
s1 = {'张三', '李四', '王五'}
# 判断张三是否在s1集合中
if '张三' in s1:
print('张三在s1集合中')
else:
print('张三没有出现在s1集合中')
2.4 集合的遍历操作
具体格式:
for i in 集合:
print(i)
三、字典的定义与使用
3.1 字典有啥用
- 字典用键值对给信息贴标签,能把姓名、年龄、性别这类相关属性打包成一个逻辑完整的元素,解决列表分散存储的问题。
- 它无需记忆元素顺序,通过 “标签” 就能快速查找和修改信息,让相关数据的管理更直观、更清晰。
3.2 Python中字典(dict)的概念和定义
概念:
① 符号为大括号花括号) => {}
② 数据为键值对形式出现 => {key:value},key:键名,value:值,在同一个字典中,key必须是唯一(类似于索引下标)
③ 各个键值对之间用逗号隔开
注意:在字典中,键名除了可以使用字符串的形式,还可以使用数值的形式来进行表示
定义:
# 有数据字典:包含name(姓名)、age(年龄)、gender(性别)三组键值对,直接存储完整个人信息
# name是键(key),Tom是值(vlue),其他类似
dict1 = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 空字典:用大括号{}直接创建,暂时无数据,后续可按需添加键值对(比如加'height': 180)
dict2 = {}
# 空字典:用内置函数dict()创建,和dict2功能完全一致,仅创建方式不同,后续可添加数据
dict3 = dict()
注意:在Python代码中,字典中的key必须使用引号引起来,比如Tom是字符串,所以要加引号。

四、字典的操作方法
操作方法无外乎 增删改查
4.1 字典的增操作(重点)
基本语法:
字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
案例1:针对基础语法进行介绍和练习
# 1. 基础字典(已有name、age、gender三个key)
person = {'name': 'Tom', 'age': 20, 'gender': '男'}
# 2. key不存在(新增键值对):添加"height"(身高),字典会新增该组数据
person['height'] = 180
print(person) # 结果:{'name': 'Tom', 'age': 20, 'gender': '男', 'height': 180}
# 3. key存在(修改值):修改已有key"age"对应的年龄,从20改成21
person['age'] = 21
print(person) # 结果:{'name': 'Tom', 'age': 21, 'gender': '男', 'height': 180}
案例2:定义一个空字典,然后添加name、age以及address这样的3个key
# 1、定义一个空字典
person = {}
# 2、向字典中添加数据
person['name'] = '刘备'
person['age'] = 40
person['address'] = '蜀中'
# 3、使用print方法打印person字典
print(person)
4.2 字典的删操作
4.2.1 del 字典名称[key]:
删除指定键对应的键值对
格式说明:del + 空格 + 字典变量名 + [ 要删除的键 ]
案例:
# 1、定义一个有数据的字典
person = {'name':'王大锤', 'age':28, 'gender':'male', 'address':'北京市海淀区'}
# 2、删除字典中的某个元素(如gender)
del person['gender']
# 3、打印字典
print(person)
4.4.2 clear()方法:
清空字典中的所有清空所有键值对
格式说明:字典变量名 .clear()
案例:
# 1、定义一个有数据的字典
person = {'name':'张三', 'age':28, 'gender':'male', 'address':'陕西省西安市'}
# 2、使用clear()方法清空字典
person.clear()
# 3、打印字典
print(person)
4.3 字典的改操作
基本语法:
字典名称[key] = value
注:如果key存在则修改这个key对应的值;如果key不存在则新增此键值对。
案例:
# 1、定义字典
person = {'name':'孙悟空', 'age': 600, 'address':'花果山'}
# 2、修改字典中的数据(address)
person['address'] = '东土大唐'
# 3、打印字典
print(person)
4.4 字典的查操作
4.4.1 方法 1:使用方括号 [](最常用)
# 字典通过 key 直接获取 value 的用法演示(含异常说明)
# 核心格式:字典名称[key] → 获取该 key 对应的 value
# ======================================
# 1. 定义一个示例字典,包含3个键值对(键:name/age/city,对应不同类型的值)
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 2. 直接通过 key 获取对应的值(核心用法:字典名[key])
# 格式:变量名 = 字典名称[要获取值的key]
# 从my_dict字典中,通过键'name'获取对应的值,赋值给变量name,结果为'Alice'
name = my_dict['name'] # 结果'Alice'
# 从my_dict字典中,通过键'age'获取对应的值,赋值给变量age,结果为25
age = my_dict['age'] # 25
# 3. ⚠️重要注意事项:使用 字典名[key] 格式时,若 key 不存在于字典中,会抛出 KeyError 异常
# 原因:my_dict 字典中仅包含 'name'、'age'、'city' 三个键,不存在 'country' 这个键
value = my_dict['country'] # KeyError: 'country'
4.4.2 方法 2:使用 get() 方法(推荐,更安全)
# 字典 get() 方法:安全获取键对应的值(不存在不报错)
# 核心格式1:字典名称.get(key) → 无默认值,key不存在返回None
# 核心格式2:字典名称.get(key, default_value) → 有默认值,key不存在返回默认值
# ======================================
# 1. 定义一个示例字典,包含3个有效键值对(name/age/city)
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 2. 场景1:要获取的 key 存在时,get() 方法返回对应的值
# 格式:字典名.get(key),此处key='name'在my_dict中存在,返回对应值'Alice'
name = my_dict.get('name') # 'Alice'
# 说明:该用法效果等同于 my_dict['name'],但更安全(后续key不存在时不会报错)
# 3. 场景2:要获取的 key 不存在时,无默认值的 get() 方法返回 None(不会抛出KeyError异常)
# 格式:字典名.get(key),此处key='country'不在my_dict中,返回None(不报错)
# 对比:若用 my_dict['country'] 会直接抛出 KeyError,这是 get() 方法的核心优势
country = my_dict.get('country') # None
# 4. 场景3:要获取的 key 不存在时,可设置默认值,get() 方法返回该默认值
# 格式:字典名.get(key, default_value)
# 此处key='country'不存在,返回自定义默认值'China',而非None
# 说明:第二个参数(默认值)是可选参数,可根据需求自定义任意合法数据类型
country = my_dict.get('country', 'China') # 'China'
4.4.3 方法 3:先检查 key 是否存在
# 字典 key 存在性检查:使用 in / not in 关键字
# 核心格式1:key in 字典名称 → 判断key是否存在(返回布尔值True/False)
# 核心格式2:key not in 字典名称 → 判断key是否不存在(返回布尔值True/False)
# ======================================
# 1. 定义一个示例字典,包含3个有效键:name、age、city
my_dict = {'name': 'Alice', 'age': 25, 'city': 'Beijing'}
# 2. 场景1:使用 'in' 关键字检查指定 key 是否存在于字典中
# 核心格式:'name'(要检查的key) + in + my_dict(字典名称)
# 判断逻辑:如果 'name' 是 my_dict 的有效键(存在),则执行if代码块内的逻辑
if 'name' in my_dict:
# 当key存在时,安全获取并打印该key对应的值(避免直接用my_dict['name']因key不存在报错)
print(my_dict['name']) # 输出:Alice
# 3. 场景2:使用 'not in' 关键字检查指定 key 是否不存在于字典中
# 核心格式:'country'(要检查的key) + not in + my_dict(字典名称)
# 判断逻辑:如果 'country' 不是 my_dict 的有效键(不存在),则执行if代码块内的逻辑
if 'country' not in my_dict:
# 当key不存在时,打印提示信息,可后续执行补充键值对等操作
print("country 不存在") # 输出:country 不存在
4.4.4 其他方法及案例
字典的其他相关查询方法

案例1:提取person字典中的所有key
# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、提取字典中的name、age以及mobile属性
print(person.keys())
案例2:提取person字典中的所有value值
# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、提取字典中的貂蝉、18以及13765022249号码
print(person.values())
案例3:使用items()方法提取数据
# 1、定义一个字典
person = {'name':'貂蝉', 'age':18, 'mobile':'13765022249'}
# 2、调用items方法获取数据,dict_items([('name', '貂蝉'), ('age', 18), ('mobile', '13765022249')])
# print(person.items())
# 3、结合for循环对字典中的数据进行遍历
for key, value in person.items():
print(f'{key}:{value}')
大家记得看注释,里面说明了格式和详细的解释
五、案例练习
集合案例:编写一个程序来统计缺失的数字并返回它们的总和。缺失的数字是指给定列表中两个极端(最大和最小数字)之间没有出现的数字。 例如,在列表[2, 5, 3, 7, 5, 7]中,两个极端(即2和7)之间缺失的数字是4和6。
字典案例:给定一个字符串my_string,现在要求统计每个字符出现的次数,利用循环将其放在字典里面,比如{'m':'1'.......}这样的形式。
六、总结
今天就给小伙伴们把数据类型---容器分享完了,有一些在代码外面进行了解释,有一些直接在代码里面进行了详细的注释,大家记得一定要仔细看看不同方法的格式和案例,加深学习的印象,想挑战一下的小伙伴们,可以在Pycharm里面练习一下,各个案例,巩固一下今天学习到的内容。
上述内容会根据大家的评论和实际情况进行实时更新和改进。
麻烦小伙伴们动一动发财的小手,给小弟点个赞和收藏,如果能获得小伙伴的关注将是我无上的荣耀和前进的动力。
小伙伴们,我是AI大佬的小弟,希望大家喜欢!!!
晚安,兄弟们。
更多推荐
所有评论(0)