Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Операции со списками (массивами)...

Celtic Hammer Мудрец (15923), закрыт 1 месяц назад
Есть вот такой список
[[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)
Лучший ответ
Андрей Высший разум (451106) 3 месяца назад
 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)
Celtic HammerМудрец (15923) 3 месяца назад
А конкретно в моем случае в чем состоит препятствие для достижения желанной цели?
Андрей Высший разум (451106) Celtic Hammer, В том, что ты не заменяешь элемент массива result новой (расширенной) версией, а каждый раз добавляешь к result новый элемент. Я обошёл эту проблему тем, что использую словарь.
Celtic HammerМудрец (15923) 3 месяца назад
Я всеже придумал как это решить по своему варианту
https://otvet.mail.ru/question/238988842
Остальные ответы
Похожие вопросы