collections模块解决了内置数据结构在特定场景下的性能与便利性问题:deque优化了两端操作的效率,避免list在频繁插入删除时的O(n)开销;defaultdict自动处理缺失键,简化了字典初始化逻辑;Counter提供了便捷的元素计数功能;namedtuple增强了元组的可读性与访问便利性;OrderedDict保留插入顺序并支持顺序调整,适用于需明确顺序控制的场景。这些工具让代码更简洁高效。

当我们在Python中处理数据时,内置的列表、字典固然强大,但有时候,我发现它们在特定场景下会显得力不从心,甚至影响性能。这时候,
collections
collections
deque
再比如
defaultdict
KeyError
defaultdict
还有
Counter
Counter
namedtuple
OrderedDict
OrderedDict
move_to_end
from collections import deque, defaultdict, Counter, namedtuple, OrderedDict
# deque 示例:高效的双端操作
d = deque(['a', 'b', 'c'])
d.append('d')
d.appendleft('z')
print(f"deque 示例: {d}") # deque(['z', 'a', 'b', 'c', 'd'])
# defaultdict 示例:自动处理缺失键
s = [('yellow', 1), ('blue', 2), ('yellow', 3), ('blue', 4), ('red', 1)]
dd = defaultdict(list)
for k, v in s:
dd[k].append(v)
print(f"defaultdict 示例: {dd}") # defaultdict(<class 'list'>, {'yellow': [1, 3], 'blue': [2, 4], 'red': [1]})
# Counter 示例:便捷的计数工具
c = Counter('gallad')
print(f"Counter 示例: {c}") # Counter({'l': 2, 'g': 1, 'a': 1, 'd': 1})
print(f"最常见的元素: {c.most_common(1)}") # [('l', 2)]
# namedtuple 示例:可读性更强的元组
Point = namedtuple('Point', ['x', 'y'])
p = Point(11, y=22)
print(f"namedtuple 示例: {p.x}, {p.y}") # 11, 22
# OrderedDict 示例 (在Python 3.7+中,普通dict也保持顺序,但OrderedDict提供更多顺序操作)
od = OrderedDict()
od['apple'] = 1
od['banana'] = 2
od['cherry'] = 3
print(f"OrderedDict 示例: {od}") # OrderedDict([('apple', 1), ('banana', 2), ('cherry', 3)])collections
在我看来,
collections
list
dict
tuple
list
insert(0, x)
pop(0)
deque
另一个痛点是
dict
KeyError
if key in dict:
dict.get(key, default_value)
defaultdict
以上就是使用 collections 模块中的高效数据结构的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号