Itertools按功能分组

时间:2010-04-07 10:29:03

标签: python itertools

我想按dict键分组

>>> 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 个答案:

答案 0 :(得分:4)

docs say

  

itertools.groupby
  每次键函数的值发生变化时,它都会生成一个中断或新组(这就是为什么通常需要使用相同的键函数对数据进行排序)。这种行为不同于SQL的GROUP BY,它聚合了常见元素而不管它们的输入顺序如何。