使用itertools按第二个值对连续元组进行分组

use*_*391 2 python tuples python-itertools

我有一组表格中的数据:

X1 = [(1,1),(3,1),(5,0),(3,0),(2,1)]
Run Code Online (Sandbox Code Playgroud)

我无法弄清楚如何将它们分组,以便:

X2 = [[(1,1),(3,1)],[(5,0),(3,0)],[(2,1)]]
Run Code Online (Sandbox Code Playgroud)

即,它们按照每个元组中的第二个值以连续方式分组.

我知道这是这样的:

http://docs.python.org/2/library/itertools.html#itertools.groupby

use*_*ica 5

from itertools import groupby
from operator import itemgetter
X2 = [list(group) for key, group in groupby(X1, itemgetter(1))]
Run Code Online (Sandbox Code Playgroud)

传递一个key函数来groupby获取每个元组的第二个项目,因此groupby将元组按其第二个项目分组.