Python 如果第一个数组相同,则合并元组列表中的元素

Python 如果第一个数组相同,则合并元组列表中的元素,python,python-2.7,Python,Python 2.7,我有一个元组列表: seqList=[('SQ010', ('sh001', '1-10')), ('SQ010', ('sh002', '5-15')), ('SQ010', ('sh003', '6-16')), ('SQ010', ('sh004', '7-17')), ('SQ020', ('sh001', '8-18')), ('SQ020', ('sh002', '9-19')), ('SQ020', ('sh003', '10-20'))] 我希望将每个元素与相同的第一个数组合并

我有一个元组列表:

seqList=[('SQ010', ('sh001', '1-10')), ('SQ010', ('sh002', '5-15')), ('SQ010', ('sh003', '6-16')), ('SQ010', ('sh004', '7-17')), ('SQ020', ('sh001', '8-18')), ('SQ020', ('sh002', '9-19')), ('SQ020', ('sh003', '10-20'))]
我希望将每个元素与相同的第一个数组合并以获得此输出:

[('SQ010', ('sh001', '1-10'), ('sh002', '5-15'), ('sh003', '6-16'), ('sh004', '7-17')), ('SQ020', ('sh001', '8-18'), ('sh002', '9-19'),('sh003', '10-20'))]
我使用以下代码尝试了groupby:

from itertools import groupby
output_list = [tuple(i[1] for i in e) for _, e in groupby(seqList, lambda x: x[0])]
print output_list
结果是:

[(('sh001', '1-10'), ('sh002', '5-15'), ('sh003', '6-16'), ('sh004', '7-17')), (('sh001', '8-18'), ('sh002', '9-19'), ('sh003', '10-20'))]

我不明白为什么我松开了SQXXX部件,以及如何获得所需的输出。谢谢

SQXXX部分是您已经去掉的
\ucode>变量。尝试:

output_list = [(i,) + tuple(i[1] for i in e) for i, e in groupby(seqList, lambda x: x[0])]
给予:

[('SQ010', ('sh001', '1-10'), ('sh002', '5-15'), ('sh003', '6-16'), ('sh004', '7-17')), ('SQ020', ('sh001', '8-18'), ('sh002', '9-19'), ('sh003', '10-20'))]

SQXXX
部分是您已经去掉的
\ucode>变量。尝试:

output_list = [(i,) + tuple(i[1] for i in e) for i, e in groupby(seqList, lambda x: x[0])]
给予:

[('SQ010', ('sh001', '1-10'), ('sh002', '5-15'), ('sh003', '6-16'), ('sh004', '7-17')), ('SQ020', ('sh001', '8-18'), ('sh002', '9-19'), ('sh003', '10-20'))]