Python Collections 模块核心数据结构与工具详解
Python 标准库中的 collections 模块提供了多种专门用于处理数据的高级容器类型。相比于内置的列表、字典和元组,这些容器在特定场景下能提供更高效的性能、更清晰的语义以及更强大的功能。本文将深入探讨 collections 模块中常用的数据结构,包括命名元组、计数器、默认字典、双端队列等,并通过详细的代码示例展示它们在实际开发中的应用。
1. 命名元组 (NamedTuple)
命名元组是元组的子类,它允许为元组的元素分配名称。这使得访问元组中的数据更加直观,提高了代码的可读性,同时保留了元组的不可变性和轻量级特性。
基本用法
from collections import namedtuple
# 定义一个命名元组类
Person = namedtuple('Person', ['name', 'age', 'country'])
# 创建实例
person1 = Person('Alice', 30, 'USA')
person2 = Person('Bob', 25, 'Canada')
# 通过字段名访问,比索引更清晰
print(person1.name) # 输出:Alice
print(person1[1]) # 输出:30 (仍支持索引)
高级特性
命名元组还支持一些有用的方法,如 _replace() 用于创建修改后的副本,_asdict() 将元组转换为有序字典。
# 修改某个字段(返回新对象)
person3 = person1._replace(age=31)
print(person3) # Person(name='Alice', age=31, country='USA')
# 转换为字典
person_dict = person1._asdict()
print(person_dict['name']) # 输出:Alice
适用场景:函数返回多个值、数据库记录映射、配置项存储等需要结构化且不可变数据的场景。
2. 计数器 (Counter)
Counter 是一个用于计数可迭代对象中元素频率的字典子类。它提供了许多方便的方法来处理统计任务。
基础统计
collections Counter
data = [, , , , , , , , , ]
counter = Counter(data)
(counter[])
(counter[])
(counter[])


