itertools的分组功能
我想根据字典的键来进行分组
>>> 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不同,后者会根据输入的顺序聚合相同的元素。