嗨,无论如何要对这个列表进行分组,以便它为每个等效的第一个元素返回一个字符串(第一个元素)和一个tuple
内的列表?
即,
[('106','1','1','43009'),('106','1','2','43179'),('106','1',' 4','43619'),('171','1','3','59111'),('171','1','4','57089'),('171',' 1','5','57079'),('184','1','18','42149'),('184','1','19','12109'),(' 184','1','20','12099')]
成为:
[('106',[('106','1','1','43009'),(''106','1','2','43179'),('106' ,'1','4','43619')]), ('171',[('171','1','3','59111'),('171','1','4','57089'),('171','1' ,'5','57079')]), ('184'[(('184','1','18','42149'),('184','1','19','12109'),('184','1' ,'20','12099')])
答案 0 :(得分:0)
如果数据已经排序,那么您可以使用itertools.groupby
,就像这样
from itertools import groupby
print [(i,) + (list(g),) for i, g in groupby(data, key=lambda x:x[0])]
<强>输出强>
[('106',
[('106', '1', '1', '43009'),
('106', '1', '2', '43179'),
('106', '1', '4', '43619')]),
('171',
[('171', '1', '3', '59111'),
('171', '1', '4', '57089'),
('171', '1', '5', '57079')]),
('184',
[('184', '1', '18', '42149'),
('184', '1', '19', '12109'),
('184', '1', '20', '12099')])]
答案 1 :(得分:0)
你可以用字典做到这一点:
from collections import defaultdict
d = defaultdict(list)
for i in big_list:
d[i[0]].append(i)
现在,您的密钥可以访问这些项目,这是第一项,您可以按顺序对密钥进行排序并访问字典:
sorted_keys = sorted(d.keys(), key=int)
for key in sorted_keys:
print(d[key])
答案 2 :(得分:0)
我会使用第一个元素作为键的字典。 另请查看有序词典。