3

我希望每个节点都有一个 ipaddress 字符串、纬度和经度值。另外,如何在查找由networkx创建的图形时获得指向此类对象的指针?

4

1 回答 1

5

NetworkX 基于图可以像字典一样工作的想法。您不需要自定义对象来充当节点,因为节点可以将任意属性添加到它们的“字典”中。

考虑以下交互式会话:

>>> import networkx as nx
>>> G = nx.Graph()
>>> G.add_node(1)
>>> G.node[1]['ipaddress'] = '8.8.8.8'
>>> G.node[1]['longitude'] = 37
>>> G.node[1]['latitude'] = 50
>>> G.node[1]
{'latitude': 50, 'ipaddress': '8.8.8.8', 'longitude': 37}
>>> G.node[1]['ipaddress']
'8.8.8.8'

1在这里,创建了一个具有单个节点的图,与ipaddresslongitudelatitude相关联。您可以通过在图形中询问节点来直接访问该节点,并以几乎相同的方式获取其属性。

要引用特定节点,您有几种可能性。例如,您可以使用字典来存储任何所需属性的列表或节点集。第二种可能性 - 仅对每个节点唯一的单个属性有用 - 是直接使用该属性作为节点。例如,对于 IP 地址:

>>> H = nx.Graph()
>>> H.add_node('8.8.8.8', longitude=37, latitude=50)
>>> H.node['8.8.8.8']
{'latitude': 50, 'longitude': 37}

在这里,我还利用了 NetworkX 提供的便利来在创建节点时指定属性。

于 2011-12-13T14:41:19.547 回答