Python的Collections模块是标准库里非常实用的一个补充,它在内置类型基础上扩展出了几种更高效、更专用的容器。掌握这些类型,可以让我们在处理特定问题时写出更简洁且性能更好的代码。

deque:双端队列
list在头部插入或删除元素时效率较低,而deque支持从两端快速操作,适合实现队列和栈。
from collections import deque
# 创建双端队列
dq = deque(['a', 'b', 'c'])
# 右侧添加
dq.append('d')
# 左侧添加
dq.appendleft('z')
# 右侧弹出
dq.pop()
# 左侧弹出
dq.popleft()
print(dq)
Counter:计数器
Counter用于统计可哈希对象的出现次数,比手写字典循环方便很多。
from collections import Counter words = ['apple', 'banana', 'apple', 'orange', 'banana', 'apple'] cnt = Counter(words) # 获取出现最多的两个 print(cnt.most_common(2)) # 统计单个元素 print(cnt['apple'])
OrderedDict:有序字典
OrderedDict会记住键值对的插入顺序,在需要保持顺序的字典场景中很有用。
from collections import OrderedDict
od = OrderedDict()
od['name'] = 'Tom'
od['age'] = 20
od['city'] = 'Beijing'
for k, v in od.items():
print(k, v)
defaultdict:带默认值的字典
使用defaultdict可以避免键不存在时手动初始化的麻烦。
from collections import defaultdict dd = defaultdict(list) dd['group1'].append(1) dd['group1'].append(2) print(dd['group1'])
namedtuple:命名元组
namedtuple让元组的元素可以通过名字访问,增强代码可读性。
from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(10, 20)
print(p.x, p.y)
使用建议
在开发中,如果碰到以下情况可以优先考虑Collections模块:
- 需要频繁在两头增删元素,用deque
- 需要统计频次,用Counter
- 需要字典保持插入顺序,用OrderedDict
- 需要按组归类数据,用defaultdict
- 希望元组有字段名,用namedtuple
这些类型都是用纯Python在C层之外做的优化封装,日常使用无需担心兼容性问题。
PythonCollectionsdequeCounterOrderedDict修改时间:2026-07-24 17:18:20