在Python编程中,除了内置的列表(list)、元组(tuple)、字典(dict)和集合(set)等基本数据结构外,标准库中的 collections 模块提供了更多强大且高效的容器类型。这些容器专为解决特定问题而设计,能让你的代码更简洁、更高效。
本教程将带你从零开始了解 Python collections库 中最常用的几种容器类型,并通过简单易懂的示例帮助你快速上手。无论你是编程小白还是有一定经验的开发者,都能从中受益。
namedtuple 是一个工厂函数,用于创建带有字段名的元组子类。它比普通元组更易读,因为你可以通过属性名而非索引来访问元素。
from collections import namedtuple# 定义一个表示“点”的具名元组Point = namedtuple('Point', ['x', 'y'])p = Point(10, 20)print(p.x) # 输出: 10print(p.y) # 输出: 20# 也可以像普通元组一样解包x, y = pprint(x, y) # 输出: 10 20 deque(double-ended queue)支持从两端高效地添加或删除元素,时间复杂度为 O(1),非常适合实现队列、栈或滑动窗口算法。
from collections import deque# 创建一个双端队列d = deque([1, 2, 3])d.append(4) # 右侧添加d.appendleft(0) # 左侧添加print(d) # 输出: deque([0, 1, 2, 3, 4])print(d.pop()) # 从右侧弹出 → 4print(d.popleft()) # 从左侧弹出 → 0 Counter 是一个字典子类,用于统计可哈希对象的出现次数。常用于文本分析、频率统计等场景。
from collections import Counter# 统计字符串中每个字符的出现次数c = Counter('hello world')print(c) # 输出: Counter({'l': 3, 'o': 2, 'h': 1, 'e': 1, ' ': 1, 'w': 1, 'r': 1, 'd': 1})# 获取最常见的2个元素print(c.most_common(2)) # [('l', 3), ('o', 2)] defaultdict 是 dict 的子类,当你访问一个不存在的键时,它会自动调用你指定的工厂函数(如 int, list 等)来生成默认值,避免 KeyError。
from collections import defaultdict# 创建一个默认值为 list 的字典dd = defaultdict(list)dd['fruits'].append('apple')dd['fruits'].append('banana')print(dd['fruits']) # ['apple', 'banana']print(dd['vegetables']) # [](自动创建空列表) 在 Python 3.7 之前,普通字典是无序的,OrderedDict 用于保持插入顺序。如今普通 dict 已具备此特性,但 OrderedDict 仍提供一些额外方法(如 move_to_end())。
from collections import OrderedDictod = OrderedDict()od['a'] = 1od['b'] = 2od['c'] = 3print(list(od.keys())) # ['a', 'b', 'c']od.move_to_end('a')print(list(od.keys())) # ['b', 'c', 'a'] 通过本教程,我们详细介绍了 Python collections库 中五种核心容器类型:namedtuple、deque、Counter、defaultdict 和 OrderedDict。它们分别适用于不同场景,能显著提升代码的可读性与执行效率。
掌握这些 Python容器类型 不仅能让你写出更专业的代码,还能在面试或实际项目中脱颖而出。建议你在日常练习中多尝试使用它们,逐步熟悉其特性和优势。
希望这篇 collections模块教程 对你有所帮助!如果你正在学习 Python数据结构,不妨将本文收藏,随时查阅。
本文由主机测评网于2025-12-26发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://www.vpshk.cn/20251212891.html