假设我有一个函数euc_2d(graph, n1, n2)
来计算同一图的两个节点之间的欧氏距离。每个节点都有一个给定的pos=(x,y)
,它是在创建图表时分配的。
NetworkX提供了一个函数来获取图的所有边的总权重,即graph.size(weight='weight')
。这个方法的问题在于它假设每当我添加一个边时,我应该使用lambda函数显式地分配适当的边权重,如graph.add_edge(u,v,weight=?)
。
然而,这非常不方便(而且冗长)因为我一直在图中添加和删除边缘。
那么,每当我询问图表的总重量时,是否有一种pythonic方式可以告诉NetworkX透明地使用euc_2d()
?
答案 0 :(得分:2)
graph.size
和graph.add_edge
都没有使用函数来评估权重,它们只是使用给定的密钥存储值。为了更容易使用,只需定义一个函数来添加具有适当权重的边:
def add_euc2d_edge(graph, u, v):
graph.add_edge(u, v, weight=euc_2d(graph, u, v))