Как объединить массивы с одинаковым элементом?

Есть список массивов типа [ ['1234', '5678', '1'], ['1234', '9012', '2'] ]. Я хочу находить все массивы с одинаковым первым элементом и добавлять значения в один общий. То есть должно получится вот это: ['1234', '5678', '1', '9012', '2']. К решению даже близко не подобрался.


Ответы (2 шт):

Автор решения: Павел

Можно например так:

list_collection = [['1234', '5678', '1'], ['1234', '9012', '2'], ['1', '2', '3', '4']]

desired_element = list_collection[0][0]

filtered_lists = [list_[1:] for list_ in list_collection if list_[0] == desired_element]

joined_list_collection = [desired_element] + [element for list_ in filtered_lists for element in list_]

print(joined_list_collection) # ['1234', '5678', '1', '9012', '2']
→ Ссылка
Автор решения: vadim vaduxa

Если объединять списки, с одинаковым первым элементом '1234' только из первого списка:

a = [['1234', '5678', '1'], ['1234', '9012', '2']]

def qwe(lst_0, *lst_n):
    yield from lst_0
    for l0, *ls in lst_n:
        if l0 == lst_0[0]:
            yield from ls

q = list(qwe(*a))
print(q)  # ['1234', '5678', '1', '9012', '2']

Если объединять списки, с одинаковыми первыми элементами '1234' и '1235' из любых списков:

a = [['1234', '5678', '1'], ['1235', '658', '4'], ['1235', '5575', '5'], ['1234', '9012', '2']]

def qwe(lst_n):
    dt = {}
    for l0, *ls in lst_n:
        dt.setdefault(l0, [l0]).extend(ls)
    return list(dt.values())


q = qwe(a)
print(q)  # [['1234', '5678', '1', '9012', '2'], ['1235', '658', '4', '5575', '5']]
→ Ссылка