如何将自定义对象作为networkx的节点,如何查找?

3 python graph networkx

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

Mic*_*ber 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'
Run Code Online (Sandbox Code Playgroud)

在这里,与单个节点的曲线图1被创建,向其中ipaddress,longitude,和latitude相关联.您可以通过询问节点的图表,以恒定的时间直接访问该节点,并以相同的方式获取其属性.

要引用特定节点,您有几种可能性.例如,您可以使用字典来存储任何所需属性的列表或节点集.第二种可能性 - 仅对每个节点唯一的单个属性有用 - 是直接将该属性用作节点.例如,对于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}
Run Code Online (Sandbox Code Playgroud)

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