Объединение одинаковых элементов списка
Есть два списка вида: [['ex1','45'],['ex2','37'],['ex3','68']] и [['ex1','78'],['ex2','12'],['ex3','43']]
Если 'имена', то есть первые элементы списков внутри списков, совпадают , то нужно их объединить в один список вида: [['ex1','45','78'],['ex2','37','12'],['ex3','68','43']]
Не могу сообразить как это сделать
Ответы (2 шт):
Автор решения: dIm0n
→ Ссылка
Вот так вот (для произвольных списков с хотя бы одним элементом во внутренних списках):
import itertools
a = [['ex1','45'],['ex2','37'],['ex3','68']]
b = [['ex1','78'],['ex2','12'],['ex3','43']]
c = [x + y[1:] for x, y in itertools.product(a, b) if x[0] == y[0]]
print(c)
Автор решения: Интик
→ Ссылка
#дано
a= sorted([['ex3','45'],['ex2','37'],['ex1','68']])
b= [['ex1','78'],['ex2','12'],['ex3','43']]
#решение
c=[[] for x in range(len(a))]
for i in range(len(a)):
if a[i][0]==b[i][0]:
c[i].append(a[i][0])
c[i].append(a[i][1])
c[i].append(b[i][1])
print(c)
#в 1 строку
z=[[a[x][0],a[x][1],b[x][1]] for x in range(len(a))]
print(z)
#ответы
[['ex1', '68', '78'], ['ex2', '37', '12'], ['ex3', '45', '43']]
[['ex1', '68', '78'], ['ex2', '37', '12'], ['ex3', '45', '43']]