Есть вот такой список [[2,[1,2,3]],[7,[8,9]],[2,[4,5,6]],[7,[11,22,23]],[2,[89,90,91]]] Нужно получить [[2, [1, 2, 3, 4, 5, 6, 89, 90, 91]], [7, [8, 9, 11, 22, 23]]] Ну, затея понятна - первые элементы подмассивов делаем уникальными и добавляем к ним весь набор того что они содержат. Но на ночь глядя пока выходит только [[2, [1, 2, 3, 4, 5, 6]], [2, [1, 2, 3, 4, 5, 6, 89, 90, 91]], [7, [8, 9, 11, 22, 23]]] Что тут придумать? ЗЫ: Всякие "Папы" сразу идут лесом
res2 = sorted([[2,[1,2,3]],[7,[8,9]],[2,[4,5,6]],[7,[11,22,23]],[2,[89,90,91]]]) result = [] m3 = [] for i in range(len(res2) - 1): if res2[i][0] == res2[i + 1][0]: m2 = m3 m3 += m2 + list(set(res2[i][1] + res2[i + 1][1])) result += [[res2[i][0], list(set(m3))]] else: m3 = [] print(result)
res = {} for v in [[2,[1,2,3]],[7,[8,9]],[2,[4,5,6]],[7,[11,22,23]],[2,[89,90,91]]]: res[v[0]] = res.get(v[0], []) + v[1] result = [[k] + [v] for k, v in res.items()] print(result)
А конкретно в моем случае в чем состоит препятствие для достижения желанной цели?
Андрей
Высший разум
(451106)
Celtic Hammer, В том, что ты не заменяешь элемент массива result новой (расширенной) версией, а каждый раз добавляешь к result новый элемент. Я обошёл эту проблему тем, что использую словарь.
[[2,[1,2,3]],[7,[8,9]],[2,[4,5,6]],[7,[11,22,23]],[2,[89,90,91]]]
Нужно получить
[[2, [1, 2, 3, 4, 5, 6, 89, 90, 91]], [7, [8, 9, 11, 22, 23]]]
Ну, затея понятна - первые элементы подмассивов делаем уникальными и добавляем к ним весь набор того что они содержат.
Но на ночь глядя пока выходит только
[[2, [1, 2, 3, 4, 5, 6]], [2, [1, 2, 3, 4, 5, 6, 89, 90, 91]], [7, [8, 9, 11, 22, 23]]]
Что тут придумать?
ЗЫ: Всякие "Папы" сразу идут лесом