我们可以使用Python中的itertools.groupby函数实现按最终项分组但保留顺序的功能。具体示例如下:
from itertools import groupby
def group_by_final_item(seq):
groups = []
uniquekeys = []
for k, g in groupby(seq, lambda x: x[-1]):
groups.append(list(g))
uniquekeys.append(k)
return groups
# 示例
seq = [(1, 2, 3), (1, 2, 4), (3, 4, 5), (6, 7, 5), (6, 7, 8)]
groups = group_by_final_item(seq)
print(groups) # 输出 [[(1, 2, 3), (1, 2, 4)], [(3, 4, 5)], [(6, 7, 5), (6, 7, 8)]]
在代码示例中,我们使用了一个自定义的lambda函数将每个元组的最后一项作为分组的关键字,然后使用groupby函数进行分组。最后,我们将分组结果存储在一个列表中,并返回该列表。