Python 集合与字典核心用法指南

凌晨两点半
凌晨两点半
发布时间:2026-10-12| 3人浏览过
原创

详细讲解 Python 中集合与字典的创建规则、核心特性及常见内置方法。通过明确参数说明与操作逻辑,提供去重存储与键值映射数据增删改查的标准实践,帮助开发者高效编写数据处理代码。

创建方式与核心特性

Python 提供了两种无序的数据结构:集合用于自动去重,字典用于建立键值映射。正确创建是后续操作的基础,需注意以下语法差异:

  • 集合(set):可使用大括号 {} 或内置函数 set() 创建。print(dir(set)) 可查看对象全部方法。注意:创建空集合必须使用 set(),因为 {} 会被解释器默认识别为空字典。
  • 字典(dict):通过赋值语句或使用 dict() 函数创建。键(key)必须是不可变数据类型(如数字、字符串、元组),值(value)可为任意类型。字典依据键存取元素,因此键名必须唯一。
# 集合创建示例
my_set = {1, 2, 3}
empty_set = set()

# 字典创建示例
d = {'a': 'value1', 'b': 'value2'}
empty_dict = {}
dict2 = dict(key='value')

集合常用操作方法

集合内置 17 个方法,按功能可分为增删、关系判断、数学运算与拷贝四类:

1. 元素增删与状态清理

  • set.add(x):向集合添加单个元素 x。
  • set.update(set1):接收可迭代对象,将其中的新元素加入集合(原地修改)。
  • set.remove(x):移除指定元素 x,若不存在则抛出 KeyError。
  • set.discard(x):移除指定元素 x,不存在时不报错。
  • set.pop():随机移除并返回一个元素(集合无序,弹出位置不可控)。
  • set.clear():清空集合内容,返回空集合。

2. 成员存在性与子集/超集判断

  • set.isdisjoint(set1):判断两个集合是否不相交(无共同元素),返回布尔值。
  • set.issubset(set1):检查当前集合是否为 set1 的子集。
  • set.issuperset(set1):检查当前集合是否包含 set1 的所有元素。

3. 集合数学运算(差集/交集/并集/对称差)

以下带 _update 后缀的方法会原地修改原集合,不带后缀则返回新集合:

  • set.difference(set1[,...]) / set.difference_update(set1[,...]):计算差集,去除共有的元素。
  • set.intersection(set1, set2, ...) / set.intersection_update(...):计算交集,保留所有集合共有的元素。
  • set.union(set1, set2, ...):计算并集,合并多个集合的元素(自动去重)。
  • set.symmetric_difference(set1) / symmetric_difference_update:计算对称差集,保留仅出现在各自集合中的元素。

4. 浅拷贝

  • set.copy():返回集合的一份浅拷贝,适用于需要独立副本的场景。

字典常用操作方法

字典基于哈希表实现,适合频繁查找的场景。其内置方法主要围绕键值对的增删查改与遍历展开:

1. 安全获取与条件设置

  • dict.get(key, default=None):返回指定键的值,键不存在时返回 default(推荐替代直接索引取值,避免 KeyError)。
  • dict.setdefault(key, default=None):行为同 get(),但键不存在时会主动将键加入字典并设为 default。

2. 遍历与视图获取

  • dict.keys():返回包含所有键的视图对象,可通过 list() 转为列表。
  • dict.values():返回包含所有值的视图对象。
  • dict.items():返回可遍历的(键,值)元组序列,常用于 for k, v in dict.items(): 循环。

3. 新增、更新与删除

  • dict.update(dict1):将另一个字典的键值对合并到当前字典,键冲突时原值被覆盖。
  • dict.pop(key[, default]):删除指定键对应的值并返回该值。必须提供 key,可选 default 防止键缺失报错。
  • dict.popitem():移除并返回一对键值元组(Python 3.7+ 遵循后进先出顺序)。
  • del dict[key]:直接使用删除命令移除指定键值对。
  • dict.clear():清空字典内所有内容。

4. 字典复制与初始化

  • dict.copy():返回字典的浅拷贝。
  • dict.fromkeys(seq[, value]):以序列 seq 中的元素作为键,value 作为统一初始值(默认为 None),创建新字典。

注意事项与常见排错

  1. 键类型限制:字典的键必须是不可变对象。若尝试使用列表或集合作为键,程序将抛出 TypeError: unhashable type。务必先转换为元组或确保其为数值/字符串。
  2. 原地修改警告:调用 .difference_update()、.update() 等方法会直接改变原对象。若需保留原始数据,请提前使用 .copy() 生成副本。
  3. 迭代期间不可变:在遍历字典或集合时直接删除元素可能导致跳过项目或引发运行时错误。建议在循环外构建待删除列表,或使用推导式过滤。

简要总结

集合专注于唯一性校验与集合运算,字典侧重于高效的键值检索与动态映射。掌握上述方法的区别与适用场景,可显著减少冗余的条件判断代码。在实际工程中,合理选用 in 关键字进行 O(1) 复杂度查找,配合视图对象安全遍历,能大幅提升数据处理脚本的健壮性。

以上就是 Python 集合和字典创建与常用方法的详细内容,更多关于 Python 数据结构的操作资料请关注本站其它相关文章!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。