NetworkX没有显示节点的数据属性

时间:2017-04-18 14:09:23

标签: python dictionary networkx

我对NetworkX的这种奇怪的行为没有遵循基于documentation on the Graph object的预期。

这是我的代码:

In [22]: G = nx.Graph()

In [23]: G.add_node("Roasted",attr_dict={"css_color":"#454463"})

In [24]: G["Roasted"]
Out[24]: {}

In [25]: G.nodes(data=True)
Out[25]: [('Roasted', {'css_color': '#454463'})]

In [23]我添加了一个带有属性字典的节点。在In [24]中,我只是简单地将图G编入索引,就像在字典上一样,并期望它返回{'css_color':'#454463'},但我得到了一个空字典。如果我要打印出显示数据的节点列表,我只能看到该字典。

在文档中,它显示:

>>> G.add_node(1, time='5pm')
>>> G.add_nodes_from([3], time='2pm')
>>> G.node[1]
{'time': '5pm'}

您应该能够通过索引节点名称本身来获取字典。为什么它对我的情况不起作用?

编辑:如果问题可能是我使用字符串而不是int作为节点名称,我试过这个:

In [29]: G.add_node(1,attr_dict={"css_color":"#454463"})

In [30]: G[1]
Out[30]: {}

问题仍然存在!这可能是一个错误???

1 个答案:

答案 0 :(得分:1)

您期望G["Roasted"]应该提供节点"Roasted"的属性是错误的来源。实际上G["Roasted"]提供了有关"Roasted"的邻居的信息。它是一个空字典这一事实表明您没有为"Roasted"分配任何邻居。

import networkx as nx
G=nx.Graph()
G.add_edge(1,2)
G[1]
>{2: {}}

您需要使用G.node["Roasted"]而不是G["Roasted"]