这是Dijkstra算法的一部分,我对一些代码有一些疑问,我不明白:
http://geekly-yours.blogspot.co.at/2014/03/dijkstra-algorithm-python-example-source-code-shortest-path.html
谁能告诉我,这些树线是干什么的?在
...
pred=predecessors.get(pred,None)
...
if new_distance < distances.get(neighbor,float('inf')):
...
unvisited[k] = distances.get(k,float('inf')) #what does this .get(k,float('inf')) ??
...
Tags:
这些都使用
get
。在将查看dict
^{pr2}$D
。如果它有键key
,它将返回D[key]
。如果不是,则返回default
。在所以第二行
^{3}$检查
new_distance
是否小于当前最佳选项,或者如果没有当前最佳选项,则将计算为True
(因为它将小于无穷大)。在第三条线
给出
unvisited[k]
无论当前距离是k
,或者如果没有定义距离,则为无穷大。在回到第一行
如果定义了
predecessors[pred]
,则它给出pred = predecessors[pred]
。如果不是,则设置pred=None
。None
是Python中使用的一个标准值,用来表示某些东西没有值。任何不显式返回任何内容的函数都将返回None
pred=predecessors.get(pred,None)
相当于这和
^{pr2}$同样,
^{3}$if new_distance < distances.get(neighbor,float('inf')):
相当于并且
unvisited[k] = distances.get(k,float('inf'))
相当于.get
是一个dict
方法,它根据给定的键获取值。例如第二个参数是找不到键时要使用的默认值。在
^{pr2}$相关问题 更多 >
编程相关推荐