关于图形中所有节点的列表(python)

时间:2018-05-18 14:00:32

标签: python graph nodes networkx

当我读到SCI2(Science of Science)软件的python脚本时,我遇到了这个问题。也许我想问的是一个简单的python问题。 我将首先在下图中显示SCI2脚本。之后,我会写一些代码。我的问题是为什么图片中的代码可以通过切片方法[:]得到所有节点的列表,但我不能。 codes from SCI2 python script也许图片无法显示,我在这里写了重要的代码。 (语言是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[:]

这是我的结果: my result 我只想获取所有节点的列表,以便我可以从此列表中获取一些节点。也许我可以改变一些节点的某些属性。但我现在不能这样做。我能想到的是python2和python3在某些地方不同的原因。我知道这是一个非常苍白的解释。

希望有人可以帮助我。

3 个答案:

答案 0 :(得分:0)

如果您想要密钥列表,请尝试:

g.nodes().keys()

如果您想要值列表,请尝试:

g.nodes().values()

答案 1 :(得分:0)

对于SCI2,在我看来,他们已经选择了如何表示图形。对于他们graph.nodes是一个列表(或者它可能是一个numpy数组或类似的东西)。因此graph.nodes[:]是一个非常明确的命令。

您正在使用networkx作为图表。对于networkx,graph.nodes是不同的。在早期版本的networkx中,它是一个返回节点列表的函数,因此graph.nodes()[:]可以执行您想要的操作,但是graph.nodes[:]之所以没有,因为您要求的是一个函数的一部分,而不是它返回的列表的一部分。在以后的版本中,它是一个NodeView。我认为您的代码可能适用于此版本。如果没有,那么我相信graph.nodes()[:]仍有效。

[我现在没有在我正在使用的计算机上安装更新的版本,所以我并非100%确定。]

答案 2 :(得分:0)

谢谢大家。我用一种方法来了解一些事情。

我使用了print type(g)print type(g.nodes)并找到了类似图片的内容。 the type of g and g.nodes
所以这是由Jython创建的,它结合了python和Java,它不是networkx的对象 好的,现在我可以说服自己了。

再次感谢大家!