python 中的 collections 模块:常用数据结构和工具详解

简介: python 中的 collections 模块:常用数据结构和工具详解

Python 的 collections 模块提供了许多有用的数据结构,超越了标准的内置数据类型。这些数据结构解决了各种常见的编程问题,包括但不限于高效的容器类型、特定目的的容器、默认值字典等。让我们深入了解其中的几个重要数据结构和工具。


1. defaultdict:带有默认值的字典


defaultdict 是 dict 的一个子类,它在创建时指定一个默认工厂函数来为字典提供默认值。


示例 1:统计字符出现次数

from collections import defaultdict

text = "apple"
char_count = defaultdict(int)

for char in text:
    char_count[char] += 1
    
print(char_count)
# 输出:defaultdict(<class 'int'>, {'a': 1, 'p': 2, 'l': 1, 'e': 1})


2. Counter:计数器


Counter 是用于计数可哈希对象的子类字典。它可用于快速计数,检查元素出现的次数等。


示例 2:统计列表中元素出现次数

from collections import Counter

numbers = [1, 2, 3, 4, 1, 2, 1, 3, 2]
number_count = Counter(numbers)

print(number_count)
# 输出:Counter({1: 3, 2: 3, 3: 2, 4: 1})


3. deque:双向队列


deque 是一个双向队列,可以在两端高效地进行添加和删除操作。


示例 3:实现队列和栈

from collections import deque

# 队列
queue = deque()
queue.append(1)
queue.append(2)
queue.popleft()  # 输出:1

# 栈
stack = deque()
stack.append(1)
stack.append(2)
stack.pop()  # 输出:2


4. namedtuple:命名元组


namedtuple 创建带有命名字段的元组,可以方便地为元组的字段命名。


示例 4:定义命名元组类型

from collections import namedtuple

Point = namedtuple('Point', ['x', 'y'])
p = Point(1, 2)

print(p.x, p.y)  # 输出:1 2


5. ChainMap:链式映射


ChainMap 可以将多个字典或映射连接成一个单独的映射,无需创建新的字典。


示例 5:合并字典并查找值

from collections import ChainMap

dict1 = {'a': 1, 'b': 2}
dict2 = {'c': 3, 'd': 4}

chain = ChainMap(dict1, dict2)
print(chain['a'])  # 输出:1
print(chain['c'])  # 输出:3


这些示例展示了 collections 模块中几个重要的数据结构和工具的用法。它们为 Python 程序员提供了更多灵活和高效地处理数据的方式。


目录
相关文章
|
4月前
|
SQL 关系型数据库 数据库
Python SQLAlchemy模块:从入门到实战的数据库操作指南
免费提供Python+PyCharm编程环境,结合SQLAlchemy ORM框架详解数据库开发。涵盖连接配置、模型定义、CRUD操作、事务控制及Alembic迁移工具,以电商订单系统为例,深入讲解高并发场景下的性能优化与最佳实践,助你高效构建数据驱动应用。
560 7
|
4月前
|
监控 安全 程序员
Python日志模块配置:从print到logging的优雅升级指南
从 `print` 到 `logging` 是 Python 开发的必经之路。`print` 调试简单却难维护,日志混乱、无法分级、缺乏上下文;而 `logging` 支持级别控制、多输出、结构化记录,助力项目可维护性升级。本文详解痛点、优势、迁移方案与最佳实践,助你构建专业日志系统,让程序“有记忆”。
374 0
|
4月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
575 0
|
4月前
|
JSON 算法 API
Python中的json模块:从基础到进阶的实用指南
本文深入解析Python内置json模块的使用,涵盖序列化与反序列化核心函数、参数配置、中文处理、自定义对象转换及异常处理,并介绍性能优化与第三方库扩展,助你高效实现JSON数据交互。(238字)
479 4
|
4月前
|
Java 调度 数据库
Python threading模块:多线程编程的实战指南
本文深入讲解Python多线程编程,涵盖threading模块的核心用法:线程创建、生命周期、同步机制(锁、信号量、条件变量)、线程通信(队列)、守护线程与线程池应用。结合实战案例,如多线程下载器,帮助开发者提升程序并发性能,适用于I/O密集型任务处理。
446 0
|
4月前
|
XML JSON 数据处理
超越JSON:Python结构化数据处理模块全解析
本文深入解析Python中12个核心数据处理模块,涵盖csv、pandas、pickle、shelve、struct、configparser、xml、numpy、array、sqlite3和msgpack,覆盖表格处理、序列化、配置管理、科学计算等六大场景,结合真实案例与决策树,助你高效应对各类数据挑战。(238字)
362 0
|
5月前
|
存储 数据库 开发者
Python SQLite模块:轻量级数据库的实战指南
本文深入讲解Python内置sqlite3模块的实战应用,涵盖数据库连接、CRUD操作、事务管理、性能优化及高级特性,结合完整案例,助你快速掌握SQLite在小型项目中的高效使用,是Python开发者必备的轻量级数据库指南。
474 0
|
存储 算法
非递归实现后序遍历时,如何避免栈溢出?
后序遍历的递归实现和非递归实现各有优缺点,在实际应用中需要根据具体的问题需求、二叉树的特点以及性能和空间的限制等因素来选择合适的实现方式。
350 59
|
8月前
|
编译器 C语言 C++
栈区的非法访问导致的死循环(x64)
这段内容主要分析了一段C语言代码在VS2022中形成死循环的原因,涉及栈区内存布局和数组越界问题。代码中`arr[15]`越界访问,修改了变量`i`的值,导致`for`循环条件始终为真,形成死循环。原因是VS2022栈区从低地址到高地址分配内存,`arr`数组与`i`相邻,`arr[15]`恰好覆盖`i`的地址。而在VS2019中,栈区先分配高地址再分配低地址,因此相同代码表现不同。这说明编译器对栈区内存分配顺序的实现差异会导致程序行为不一致,需避免数组越界以确保代码健壮性。
178 0
栈区的非法访问导致的死循环(x64)

热门文章

最新文章

推荐镜像

更多