你的名单是扁平的,不是嵌套的,所以我们要做的第一件事就是将所有东西分成三组
zip(*[iter(data)]*3)
然后我们可以创建一个字典,我们将在其中构建列表。
from collections import defaultdict
d = defaultdict(list)
for a, b, c in zip(*[iter(data)]*3):
d[a].append(b)
d[a].append(c)
print([(k,) + tuple(v) for k, v in d.items()])
#[('1002', '1', '10', '2', '20', '3', '30'), ('1004', '1', '30', '2', '40', '3', '60')]
然后我们只是从该字典构建输出。
编辑:根据更改,我们将修改我们在dict中存储值的方式
data = (
['1002','1','10'],
['1002','2','20'],
['1002','3','30'],
['1004','1','30'],
['1004','2','40'],
['1004','3','60'])
d = defaultdict(list)
for a, b, c in data:
d[a].append((b, c))
output = []
for k, v in d.items():
output.append([k])
a, b = map(list, zip(*v))
output.append(a)
output.append(b)
print(output)
#[['1002'], ['1', '2', '3'], ['10', '20', '30'], ['1004'], ['1', '2', '3'], ['30', '40', '60']]