Объединение одинаковых элементов списка

Есть два списка вида: [['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']]
→ Ссылка