列表中子列表对比第一个值如果相同就把后面的值合并到一起
[['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]