Я очень новичок в сети и графике вообще и хотел вашей помощи.Добавить узел в сеть x только в том случае, если узел с таким же атрибутом не существует
Я проектирую график, в котором каждый узел имеет node_id (это всего лишь количество точек, которые я выполняю, чтобы сделать мой график) и пять атрибутов.
I.e.
G.add_node(node_id)
G[id]['Coord1'] = 3
G[id]['Coord2'] = 7
G[id]['Coord3'] = None
G[id]['Coord4'] = None
G[id]['Coord5'] = None
Так что теперь я хочу рассмотреть вопрос о добавлении нового узла с некоторыми координатами.
Теперь перед добавлением нового узла в мой график, я хочу проверить, что еще нет узла, который имеет атрибут (один из коордов), который совпадает с узлом, который я собираюсь добавить.
Если уже существует узел, который имеет общую общую координату, то я не буду добавлять новый узел, а просто внести некоторые изменения в существующий узел.
Единственный способ, которым я мог придумать это, - это перебрать все существующие узлы в графе и проверить, совпадает ли один из атрибутов с узлом, который я рассматриваю при добавлении. Например.
find_node = [attrdict for n,attrdict in G.node.items() if attrdict['coord1'] == tempcoord ]
Где tempcoord - координата интереса на узле, который я собираюсь добавить.
Это явно очень неэффективно, чтобы делать это каждый раз, когда я хочу добавить узел, чтобы проверить все существующие узлы, мой вопрос: есть ли лучший способ?
Я понимаю, что networkx не добавит новый узел с одним и тем же идентификатором, но это не распространяется на узлы, которые имеют одинаковый атрибут правильно?
В качестве альтернативы, лучше ли построить граф со всеми этими «дублирующими» узлами, а затем сконденсировать все узлы, которые имеют некоторые общие атрибуты вниз в один узел после того, как я добавил все узлы?
Извините за несколько запутанное объяснение, я надеюсь, что это имеет смысл.
У этих ответов не было уместным? http://stackoverflow.com/questions/23233127/how-to-get-values-from-specific-node-attributes-in-networkx-with-python?rq=1 или http://stackoverflow.com/questions/ 15644684/best-practices-for-querying-graphs-by-edge-and-node-attributes-in-networkx? Rq = 1 – zezollo
Привет, Zezollo, спасибо, что указал на эти потоки. Хотя они определенно связаны, они действительно не отвечали на мой вопрос. Я знаю, как получить список значений атрибутов и индексов и просто выбрать все узлы с определенными атрибутами. Мне было интересно, можно ли получить доступ к узлу на основе уникального атрибута, а не индекса узла. – AHawks
В сущности, я хочу иметь доступ к узлу с помощью нескольких атрибутов хеширования, а не только индекса узла. Есть ли способ сделать это? – AHawks