技术文摘
不使用Pandas快速分组二维列表的方法
2025-01-09 00:44:49 小编
在数据处理过程中,我们常常会遇到需要对二维列表进行分组的情况。通常,大家可能会想到使用Pandas库来轻松实现这一操作。然而,在某些场景下,比如对性能要求极高,或者运行环境不支持Pandas库的情况下,掌握不使用Pandas快速分组二维列表的方法就显得尤为重要。
我们可以利用Python内置的字典数据结构来实现分组功能。假设有一个二维列表,其中每个子列表包含两个元素,第一个元素是分组的依据,第二个元素是需要分组的数据。
实现的核心思路是遍历二维列表,以分组依据作为字典的键,将对应的数据添加到以该键为标识的列表中。具体代码如下:
data = [['A', 1], ['A', 2], ['B', 3], ['B', 4]]
grouped = {}
for item in data:
key = item[0]
value = item[1]
if key not in grouped:
grouped[key] = []
grouped[key].append(value)
print(grouped)
这段代码首先创建了一个空字典grouped。接着,遍历二维列表data,对于每个子列表,提取其第一个元素作为键key,第二个元素作为值value。如果键key不在字典grouped中,就创建一个以该键为标识的空列表;然后将值value添加到对应键的列表中。最终,字典grouped中就实现了按照第一个元素对二维列表的分组。
另外,collections模块中的defaultdict也能简化上述代码。defaultdict会在访问不存在的键时自动创建一个默认值,这样我们就无需手动检查键是否存在。代码示例如下:
from collections import defaultdict
data = [['A', 1], ['A', 2], ['B', 3], ['B', 4]]
grouped = defaultdict(list)
for item in data:
key = item[0]
value = item[1]
grouped[key].append(value)
print(dict(grouped))
通过使用defaultdict,代码更加简洁明了。这种不依赖Pandas库对二维列表进行分组的方法,在资源受限或追求极致性能的场景下,能发挥出很大的优势,帮助开发者高效地完成数据处理任务。
- 程序员的故事:午餐不免费
- 询问 2300 个开发者,总结 JavaScript 的十项要点
- 如何优化遗留代码库,你了解吗?
- JavaScript:既“老”又潮,别再黑它
- 十大编程挑战网站助您速升编程能力
- 单层基础神经网络用于手写字识别的实现
- 前端领域 2017 年的变化与 2018 年的期待
- 2017 年编程语言排名:PHP 居第 8,Java 列第 3!
- 前端本地存储超全讲解
- FastDFS 并发存疑:一次问题排查经历
- 王健林旗下万达网科超千名员工被集体裁员 已接通知
- 美团点评高可用数据库架构的演进之路:屡踩坑洼
- JavaScript 年度调查:React、Vue 与 Angular 三足鼎立,2018 年谁能称霸?
- Parcel:常见技术栈集成模式
- Python 无所不在