我有一个元组列表,一些元组有'开始'和'结束'作为元组中的第一项。我想把元组列表分成一系列元组列表,其中的子列表按照它们是否位于第一项中的“开始”和第一项中的“结束”之间的元组进行分组。如何根据特定的文本标准对元组列表进行分组/分组?
list = [('start',1),('item_1',4),('item_2',2),('end',1),('start',10),('item_1',5),('item_3',2),('end',1),('start',10),('item_1',5),('item_3',2),('item_3',9),('end',1)]]
desired_result = [[('start',1),('item_1',4),('item_2',2),('end',1)],[('start',10),('item_1',5),('item_3',2),('end',1)],[('start',10),('item_1',5),('item_3',9),('item_3',2),('end',1)]]
我想利用GROUPBY和itemgetter收效甚微:
from operator import itemgetter
from itertools import groupby
[list(group) for key, group in itertools.groupby(sorted(list), itemgetter('start','end')]