我正在尝试根据第二个参数对数据进行分组。
test= [(1,1),(3,1),(5,0),(3,0),(2,1)]
我正在从此thread
中删除代码from itertools import groupby
from operator import itemgetter
result = [list(group) for key, group in groupby(test, itemgetter(1))]
但不是得到一个看起来像的结果: [[(1,1),(3,1),(2,1)],[(5,0),(3,0)]]
为什么我将最后一个元组放在一个单独的列表中,而我应该将其与其他值组合在一起 1 是第二个值
[[(1,1),(3,1)],[(5,0),(3,0)],的 [(2,1)]
答案 0 :(得分:1)
这也让我在过去绊倒了。如果您希望它全局分组,最好先对列表进行排序:
In [163]: test = [(1,1),(3,1),(5,0),(3,0),(2,1)]
In [164]: crit = operator.itemgetter(1)
In [165]: test.sort(key=crit)
In [166]: result = [list(group) for key, group in itertools.groupby(test, crit)]
In [167]: result
Out[167]: [[(5, 0), (3, 0)], [(1, 1), (3, 1), (2, 1)]]