python列表嵌套按条件合并

问题遇到的现象和发生背景

列表中子列表对比第一个值如果相同就把后面的值合并到一起

用代码块功能插入代码,请勿粘贴截图

[['66', '1111111111'], ['82', '63406467302'], ['129', '123456'], ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]

我想要达到的结果

[['66', '1111111111'], ['82', '63406467302', '63341550599'], ['129', '123456', '63406465346'], ['123', '456']]

import itertools as it

l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]

res = sorted(l, key = lambda x: x[0])
rr = it.groupby(res, key = lambda x: x[0])
result = []
for i in rr:
    r = (i[0], ) + list(zip(*i[1]))[1]
    result.append(list(r))
print(result)
--result
[['123', '456'], ['129', '123456', '123456888', '63406465346'], ['66', '1111111111'], ['82', '63406467302', '63341550599']]

再给你来个简单的:
from collections import defaultdict

l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]

d = defaultdict(list)
for i in l:
    d[i[0]] += i[1:]

result = [[k, *v] for k, v in d.items()]
print(result)
data = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'], ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]
print([res for res in map(lambda key:[key, *[v[1] for v in data if v[0] == key]], set([i[0] for i in data]))])

还能有比这更简单的?(手动狗头

开写

举个例子呗

import itertools as it
l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]
res = sorted(l, key = lambda x: x[0])
rr = it.groupby(res, key = lambda x: x[0])
result = []
for i in rr:
r = (i[0], ) + list(zip(*i[1]))[1]
result.append(list(r))
print(result)
--result
[['123', '456'], ['129', '123456', '123456888', '63406465346'], ['66', '1111111111'], ['82', '63406467302', '63341550599']]
hdjdhbHbvd
from collections import defaultdict
l = [['66', '1111111111'], ['82', '63406467302'], ['129', '123456'],['129', '123456888'] , ['123', '456'], ['82', '63341550599'], ['129', '63406465346']]
d = defaultdict(list)
for i in l:
d[i[0]] += i[1:]
result = [[k, *v] for k, v in d.items()]
print(result)

类似

res_list = [{**b, **{'value': {a['id']: a['value'] for a in a_list}[b['id']]}} for b in b_list]


参考一下