Python как мне найти второе соединение? - PullRequest
0 голосов
/ 17 ноября 2018

удалено Я не должен задавать этот вопрос

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Поскольку я не вижу ваш класс, я просто собираюсь реализовать решение, не интегрируя его в класс. Я также собираюсь описать соединения, как показано ниже, поскольку вы не указали свою структуру данных.

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')]

Предполагая, что ваша структура данных, по крайней мере, немного отличается от этой, вам нужно настроить это решение для соответствия вашим шаблонам. Но, насколько я могу судить, это решение.

0 голосов
/ 17 ноября 2018

Я буду держать это на низком уровне технологий;Вы можете вставить это в понимание, если хотите.

Перебирать список соединений первого порядка.Для каждого соединения получите их соединения первого порядка и добавьте их в текущий набор второго порядка, который я назвал friend_of_friend.

def second_connections(self):
    for other in self.connections:
        self.friend_of_friend.union(other.connections)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...