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.