itertools的分组功能

-1 投票
1 回答
613 浏览
提问于 2025-04-15 21:19

我想根据字典的键来进行分组

>>> x
[{'a': 10, 'b': 90}, {'a': 20}, {'a': 30}, {'a': 10}]
>>> [(name, list(group)) for name, group in groupby(x, lambda p:p['a'])]
[(10, [{'a': 10, 'b': 90}]), (20, [{'a': 20}]), (30, [{'a': 30}]), (10, [{'a': 10}])]

这必须要根据键10来分组 :(

1 个回答

4

文档中说

itertools.groupby
每当关键函数的值发生变化时,它就会生成一个新的分组或中断(这就是为什么通常需要使用相同的关键函数对数据进行排序)。这种行为与SQL中的GROUP BY不同,后者会根据输入的顺序聚合相同的元素。

撰写回答