Python 基础:集合与字典核心用法详解
在 Python 编程中,**集合(Set)和字典(Dictionary)**是两种非常常用且重要的内置数据结构。它们各自具有独特的特性,适用于不同的数据处理场景。本文将详细介绍它们的创建、操作、遍历以及性能特点。
Python 集合与字典是两种重要的内置数据结构。集合用于存储无序且唯一的元素,支持去重及数学集合运算;字典用于存储键值对,通过键快速查找值,适用于配置管理或对象映射。本文详细讲解了它们的创建方式、常用操作方法(增删改查)、遍历技巧以及性能特点,帮助开发者高效利用这两种结构处理数据。

在 Python 编程中,**集合(Set)和字典(Dictionary)**是两种非常常用且重要的内置数据结构。它们各自具有独特的特性,适用于不同的数据处理场景。本文将详细介绍它们的创建、操作、遍历以及性能特点。
创建集合可以使用花括号 {} 或 set() 函数。但需要注意,空集合必须使用 set() 创建,因为 {} 会被解释为空字典。
# 创建非空集合
s1 = {10, 20, 30, 40, 50}
print(s1)
# 自动去重
s2 = {10, 30, 20, 10, 30, 40, 30, 50}
print(s2) # 输出结果中每个数字只出现一次
# 通过序列创建集合
s3 = set('abcdefg')
print(s3)
# 创建空集合(重要)
s4 = set()
print(type(s4)) # <class 'set'>
# 错误示范:{} 创建的是空字典
s5 = {}
print(type(s5)) # <class 'dict'>
s1 = {10, 20}
s1.add(100)
s1.add(10) # 不会重复添加
print(s1) # {10, 20, 100}
s1.update([100, 200]) # 追加列表元素
s1.update('abc') # 追加字符串字符
print(s1)
KeyError。s1 = {10, 20}
s1.remove(10)
# s1.remove(10) # 报错:KeyError
s1.discard(10) # 安全删除
s1.pop() # 随机删除一个
s1.clear() # 清空所有
使用 in 和 not in 运算符判断元素是否存在于集合中。集合的查找效率很高,平均时间复杂度为 O(1)。
s1 = {10, 20, 30}
print(10 in s1) # True
print(5 not in s1) # True
集合支持数学上的集合运算,包括交集、并集、差集和对称差集。
a = {1, 2, 3, 4}
b = {3, 4, 5, 6}
# 并集 (|)
print(a | b) # {1, 2, 3, 4, 5, 6}
# 交集 (&)
print(a & b) # {3, 4}
# 差集 (-)
print(a - b) # {1, 2}
# 对称差集 (^)
print(a ^ b) # {1, 2, 5, 6} (不在交集中的元素)
字典用于存储键值对(Key-Value Pair)。它非常适合用于快速查找、映射关系存储、配置管理或记录对象属性。
例如,存储学生信息:
通过姓名(Key)可以快速找到对应的年龄和性别(Value)。
字典使用大括号 {} 包裹,内部由多个键值对组成,键值对之间用逗号分隔。
# 有数据的字典
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
# 空字典
dict2 = {}
dict3 = dict()
注意:冒号前面的称为键(Key),简称 k;冒号后面的称为值(Value),简称 v。键必须是不可变类型(如字符串、数字、元组),且唯一;值可以是任意类型。
通过 dict[key] = value 的方式赋值。如果键已存在,则更新值;如果键不存在,则新增键值对。
dict1 = {'name': '张三', 'age': 20}
dict1['name'] = '李四' # 修改
print(dict1) # {'name': '李四', 'age': 20}
dict1['id'] = 110 # 新增
print(dict1) # {'name': '李四', 'age': 20, 'id': 110}
dict1 = {'name': '张三', 'age': 20}
del dict1['age'] # 删除键值对
# del dict1 # 删除整个字典变量
dict1.clear() # 清空内容
dict[key],若键不存在会报错。dict.get(key, default),更安全,键不存在时返回默认值(None 或指定值)。dict1 = {'name': '张三', 'age': 20}
print(dict1['name']) # 张三
# print(dict1['id']) # 报错 KeyError
print(dict1.get('name')) # 张三
print(dict1.get('id', 110)) # 110 (默认值)
print(dict1.get('id')) # None
print(dict1.keys()) # dict_keys(['name', 'age'])
print(dict1.values()) # dict_values(['张三', 20])
print(dict1.items()) # dict_items([('name', '张三'), ('age', 20)])
使用 for 循环可以遍历字典的键、值或键值对。
dict1 = {'name': '张三', 'age': 20, 'gender': '男'}
# 遍历键
for key in dict1.keys():
print(key)
# 遍历值
for value in dict1.values():
print(value)
# 遍历键值对
for k, v in dict1.items():
print(f'{k}: {v}')
集合和字典是 Python 中处理数据的核心工具。集合擅长去重和集合运算,字典擅长快速映射和查找。掌握它们的特性与操作方法,能显著提升代码的效率和可读性。在实际开发中,应根据数据特性和业务需求选择合适的结构。

微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online
将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online