Python 给定自定义边权重计算Networkx中的最短路径

Python 给定自定义边权重计算Networkx中的最短路径,python,graph,networkx,Python,Graph,Networkx,我试图为每条边指定长度属性,并根据这些长度计算从节点X到节点Y的最短路径 但是,我不确定如何正确引用我在这部分代码中指定的长度属性: nx.最短路径(G,source='Dehli',target='Pune',weight=??) 代码: 从中,调用最短路径的形式为最短路径(G,source=None,target=None,weight=None) 可选参数weight为 权重(无或字符串,可选(默认值=无))–如果无,则每条边的权重/距离/成本为1。如果是字符串,请使用此边属性作为边权重。

我试图为每条边指定长度属性,并根据这些长度计算从节点X到节点Y的最短路径

但是,我不确定如何正确引用我在这部分代码中指定的长度属性:
nx.最短路径(G,source='Dehli',target='Pune',weight=??)

代码: 从中,调用
最短路径
的形式为
最短路径(G,source=None,target=None,weight=None)

可选参数
weight

权重(无或字符串,可选(默认值=无))–如果无,则每条边的权重/距离/成本为1。如果是字符串,请使用此边属性作为边权重。任何不存在的边属性默认为1


因此,在您的例子中,将其称为
path=nx.shortest_path(G,source='Dehli',target='Pune',weight='length')
。请注意,Networkx采用edge属性
length=X
,并将其存储在字典中,其中包含键
'length'
(一个字符串)和值
X

,谢谢!我没有在长度上加括号,这解决了所有问题(仅供参考,在stackoverflow上感谢某人的方法是将答案标记为已接受——这给了他们奇特的互联网点数,但也告诉未来有类似问题的人,答案确实有效)。
import matplotlib.pyplot as plt
G = nx.Graph()
G.add_nodes_from(["Dehli","Ahmadabad","Kolkata",'Bangalore','Pune','Maduraj'])
G.add_edge('Dehli', 'Ahmadabad', length =890)
G.add_edge('Dehli', 'Kolkata', length =1422)
G.add_edge('Dehli', 'Bangalore', length =2168)
G.add_edge('Dehli', 'Pune', length =1450)
G.add_edge('Dehli', 'Maduraj', length = 2603)

G.add_edge('Ahmadabad', 'Kolkata', length =1902)
G.add_edge('Ahmadabad', 'Bangalore', length =1403)
G.add_edge('Ahmadabad', 'Pune', length =624)
G.add_edge('Ahmadabad', 'Maduraj', length =1807)
G.add_edge('Kolkata', 'Bangalore', length =1778)
G.add_edge('Kolkata', 'Pune', length =1782)
G.add_edge('Kolkata', 'Maduraj', length =2043)

G.add_edge('Bangalore', 'Pune', length =824)
G.add_edge('Bangalore', 'Maduraj', length =404)
G.add_edge('Pune', 'Maduraj', length =1195)



nx.draw(G,pos,node_color='k')

path = nx.shortest_path(G,source='Dehli',target='Pune')
path_edges = zip(path,path[1:])
nx.draw_networkx_nodes(G,pos,nodelist=path,node_color='g')
nx.draw_networkx_edges(G,pos,edgelist=path_edges,edge_color='g',width=7)
print(nx.shortest_path_length(G,source='Dehli',target='Pune'))
plt.show()