О списке всех узлов в графе (питоне) - PullRequest
0 голосов
/ 18 мая 2018

Я отвечаю на этот вопрос, когда читаю о скрипте python программного обеспечения SCI2 (Science of Science).Может быть, я хочу задать простой вопрос по питону.Сначала я покажу скрипт SCI2 на картинке ниже.После этого я напишу несколько кодов.Мой вопрос заключается в том, почему коды на рисунке могут получить список всех узлов методом нарезки [:], но я не могу. коды из скрипта Python SCI2 * ​​1002 * Возможно, изображение не может быть показано, я пишу важные коды здесь.(язык python)

# make a copy of the list of all nodes
nodesbynumworks = g.nodes[:]

Что я написал:

import networkx as nx
g =nx.Graph()
g.add_node(1,size=11)
g.add_node(2,size=12)
a = g.nodes[:]

И вот мой результат: мой результат Я просто хочу получить списокиз всех узлов, так что я могу взять некоторые узлы из этого списка.И, возможно, я могу изменить некоторые атрибуты некоторых узлов. Но сейчас я не могу этого сделать.Я могу подумать о том, что python2 и python3 в некоторых местах различны.Я знаю, это очень бледное объяснение.

Надеюсь, кто-нибудь может мне помочь.

Ответы [ 3 ]

0 голосов
/ 18 мая 2018

Для SCI2 мне кажется, что они сделали выбор о том, как представлять графики.Для них graph.nodes - это список (или, может быть, это пустой массив или что-то подобное).Таким образом, graph.nodes[:] - это совершенно определенная команда.

Вы используете networkx для своих графиков.Для сети graph.nodes это что-то другое.В более ранних версиях networkx это функция, которая возвращает список узлов, поэтому graph.nodes()[:] будет делать то, что вы хотите, но graph.nodes[:] не делает этого, потому что вы запрашиваете фрагмент функции, а некусок списка, который он возвращает.В более поздних версиях это NodeView.Я думаю, что ваш код может работать в этой версии.Если нет, то я вполне уверен, что graph.nodes()[:] все еще работает.

[У меня нет новой версии на компьютере, который я сейчас использую, поэтому я не уверен на 100%.]

0 голосов
/ 19 мая 2018

Спасибо всем. Я использовал метод, чтобы узнать что-то.

Я использовал print type(g) и print type(g.nodes) и нашел что-то похожее на картинку. тип g и g.nodes
Так что это создано Jython, который объединяет python и Java, и это не объект networkx.
Хорошо, теперь я могу убедить себя.

Спасибо всем снова!

0 голосов
/ 18 мая 2018

Если вам нужен список ключей, попробуйте:

g.nodes().keys()

Если вы хотите список значений, попробуйте:

g.nodes().values()
...