Python 如何在不创建冗余数据的情况下改进networkx图形的结果?
目前,我有一个非常简单的图表,如下所示:Python 如何在不创建冗余数据的情况下改进networkx图形的结果?,python,python-3.x,dictionary,graph,networkx,Python,Python 3.x,Dictionary,Graph,Networkx,目前,我有一个非常简单的图表,如下所示: import networkx as nx G = nx.Graph() lat = 40.661 long = -73.944 G.add_node(12345, latlong=(lat, long)) 当然,和G.nodes[12345]['latlong']返回(40.661,-73.944) 设置事情的最佳方式是什么,以便我也获得: G.nodes[12345]['longlat']返回(-73.944,40.661) G.nodes[
import networkx as nx
G = nx.Graph()
lat = 40.661
long = -73.944
G.add_node(12345, latlong=(lat, long))
当然,和G.nodes[12345]['latlong']
返回(40.661,-73.944)
设置事情的最佳方式是什么,以便我也获得:
G.nodes[12345]['longlat']
返回(-73.944,40.661)
G.nodes[(40.661,-73.944)]
返回12345
我知道我也可以添加这样的节点:G.add_节点(12345,latlong=(lat,long),longlat=(long,lat))
并且有一个额外的字典d={(40.661,-73.944):12345}
但是,还有一种更好的、不太粗糙的、不重复数据的方法吗?
networkx
是一个图形包,在这个包中,您必须始终决定要用节点表示哪个元素(在您的情况下是id还是位置)。或者,如果您只想存储信息,并且想自由访问您拥有的任何信息,您可能需要查找表(例如pandas软件包)或数据库(如果您有大型数据集)。显然,我需要图形。。。现在,我添加了一个字典,将latlong映射到ID,并将函数映射到实例。所以这些现在起作用了:G.get\u id()
,G.get\u latlong()
,G.get\u longlat()
。但我不确定是否有一个非常好的方法来做到这一点。好的,我理解。因此,您需要类似于此问题中所述的内容:并创建自己的networkx.Graph
子类,请参见,其中您将dict
替换为AliasDict
networkx
是一个图形包,您必须始终决定要用节点表示哪个元素(在您的情况下,可以是id或位置)。或者,如果您只想存储信息并想自由访问您拥有的任何信息,您可能需要查找表(例如pandas软件包)或数据库(如果您有大型数据集)。显然,我需要这个图…现在我已经添加了一个字典,将latlong映射到id,并将函数映射到实例。因此,这些现在可以工作:G.get\u id()
,G.get\u latlong()
,G.get\u longlat()
。但不确定是否有一种真正简洁的方法可以做到这一点。好的,我理解。因此,您需要类似于此问题中所述的内容:并创建自己的networkx.Graph
子类,请参见,其中您将dict
替换为AliasDict