Поскольку я не вижу ваш класс, я просто собираюсь реализовать решение, не интегрируя его в класс. Я также собираюсь описать соединения, как показано ниже, поскольку вы не указали свою структуру данных.
sets = set([("A", "B"),("A", "D"),("A", "C"),("A", "E"),("B", "F"),("D", "G"), ("F","H")])
def up_to_second(name, sets):
connectables = [name] + [x[1] for x in sets if x[0] == name]
return [x for x in sets if x[0] in connectables]
up_to_second("A", sets)
Это дает ожидаемый результат:
[('A', 'B'), ('A', 'D'), ('A', 'C'), ('A', 'E'), ('D', 'G'), ('B', 'F')]
Предполагая, что ваша структура данных, по крайней мере, немного отличается от этой, вам нужно настроить это решение для соответствия вашим шаблонам. Но, насколько я могу судить, это решение.