Chcę grupować krotki na podstawie podobnych atrybutów

Mam listę krotek. [(1, 2), (2, 3), (4, 3), (5, 6), (6, 7), (8, 2)]

Chcę pogrupować je w listy, na podstawie których krotki są połączone (mają powiązane wartości).

Wynik końcowy to dwie listy powiązanych wartości krotek = [[1, 2, 3, 4, 8], [5, 6, 7]]

Jak mogę napisać funkcję, aby to zrobić? To było pytanie o rozmowę kwalifikacyjną. Próbowałem to zrobić w Pythonie, ale jestem sfrustrowany i chcę zobaczyć logikę odpowiedzi, więc nawet kod psuedo mi pomoże, więc mogę zobaczyć, co zrobiłem źle.

Miałem tylko kilka minut na zrobienie tego na miejscu, ale oto co próbowałem:

def find_partitions(connections):
 theBigList = []     # List of Lists
 list1 = []          # The initial list to store lists
 theBigList.append(list1)

 for list in theBigList:
 list.append(connection[1[0], 1[1]])
     for i in connections:
         if i[0] in list or i[1] in list:
             list.append(i[0], i[1])

         else:
             newList = []
             theBigList.append(newList)

Zasadniczo facet chciał mieć listę list powiązanych wartości. Próbowałem użyć pętli for, ale zdałem sobie sprawę, że nie zadziała, a potem skończył się czas.

questionAnswers(5)

yourAnswerToTheQuestion