当我读到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在某些地方不同的原因。我知道这是一个非常苍白的解释。
希望有人可以帮助我。
答案 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的对象
好的,现在我可以说服自己了。
再次感谢大家!