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

Python 如何将自定义对象作为networkx的节点,以及如何查找它?,python,graph,networkx,Python,Graph,Networkx,我希望每个节点都有一个ipaddress字符串、纬度和经度值。另外,在查找networkx创建的图形时,如何获取指向此类对象的指针?networkx基于图形可以像字典一样工作的思想。您不需要自定义对象来充当节点,因为节点可以在其“字典”中添加任意属性 审议以下互动会议: >>> import networkx as nx >>> G = nx.Graph() >>> G.add_node(1) >>> G.node[1]['

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

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
的图,该图与
ipaddress
经度
纬度
相关联。您可以通过询问节点的图形,在固定时间内直接访问该节点,并以大致相同的方式获取其属性

要引用特定节点,有两种可能性。例如,您可以使用字典存储任何所需属性的节点列表或节点集。第二种可能性(仅对每个节点唯一的单个属性有用)是直接将该属性用作节点。例如,对于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提供的便利,在创建节点时指定属性

@user494461您能直接使用IP地址作为节点吗?或者您可能有多个具有相同IP地址的节点?我希望IP地址直接作为节点,而不希望有多个节点,并且希望能够创建多个节点的边,而无需创建重复节点nodes@user494461只需直接使用IP地址作为节点;见修改后的答案。