我正在尝试对以下详细信息列表进行分组:

details = [('20130325','B'), ('20130320','A'), ('20130325','B'), ('20130320','A')]

>>for k,v in itertools.groupby(details,key=operator.itemgetter(0)):
>>  print k,list(v)

这是上述 groupby 语句的输出:
20130325 [('20130325', 'B')]

20130320 [('20130320', 'A')]

20130325 [('20130325', 'B')]

20130320 [('20130320', 'A')]

但我的预期输出是:
20130325 [('20130325', 'B'),('20130325', 'B')]

20130320 [('20130320', 'A'),('20130320', 'A')]

我在某处做错了吗?

最佳答案

您必须先对您的详细信息进行排序:

details.sort(key=operator.itemgetter(0))

或者
fst = operator.itemgetter(0)
itertools.groupby(sorted(details, key=fst), key=fst)

Groupby 将连续匹配的记录组合在一起。

Documentation:

关于Python Groupby 语句,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15636008/

10-12 21:56