Как объединить массивы с одинаковым элементом?
Есть список массивов типа [ ['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']]