Как соединить списки по условию?

Всем привет! Не могу найти красивый способ соединения 2 списков.
Есть 2 списка (списки имеют 15000+ подсписков):
a = [[1, 100], [2, 200], [3,300], ...]
b = [[1, 110],  [3,330], ...]

На выходе мне нужно их объединить по первому элементу каждого списка
с = [[1, 100, 110], [2, 200], [3, 300, 310], ...]
Или же можно объединить в словарь.
Как это сделать красиво по питоновски? И что бы это было быстро)
  • Вопрос задан
  • 113 просмотров
Решения вопроса 1
DDDsa
@DDDsa
a = [[i, i*100] for i in range(15000)]
b = [[i, i*110] for i in range(15000)]
c = {}

for i in a+b:
    c.setdefault(i[0], []).append(i[1:])


Так, например?

UPD: с точки зрения транжирства ресурсов наверное правильнее вместо for i in a+b сделать два цикла, для a и для b. Так мы не будем выделять память под новый бесполезный список только чтобы код смотрелся лаконичнее. Но 15000 подсписков — это, в общем, ерунда и особо заморачиваться не стоит.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы