Python 调用Dijkstra函数时出错

Python 调用Dijkstra函数时出错,python,dijkstra,shortest-path,Python,Dijkstra,Shortest Path,当我调用此函数时,会出现下面的错误,非常感谢您的任何想法 错误: dist,next=Dijkstra(图、汇、源) 第111行,在迪克斯特拉 S、 Q=列表(源[:]),范围(1,n+1) TypeError:“int”对象没有属性“getitem” 守则: def Dijkstra(graph, sink, sources = None): n = len (graph.nodes ()) dist = {k+1:np.inf for k in range(n)} n

当我调用此函数时,会出现下面的错误,非常感谢您的任何想法

错误: dist,next=Dijkstra(图、汇、源) 第111行,在迪克斯特拉 S、 Q=列表(源[:]),范围(1,n+1) TypeError:“int”对象没有属性“getitem

守则:

def Dijkstra(graph, sink, sources = None):
    n = len (graph.nodes ())
    dist = {k+1:np.inf for k in range(n)}
    next = {k+1:None for k in range(n)}
    dist[sink] = 0.0
    S = list(sources[:])
    Q = range(1,n+1)
    while len(Q)>0:
        min = np.inf
        for v in Q:
            if (dist[v] < min):
                u=v
                min = dist[v]
        if min == np.inf: return dist, next
        for s in S:
            if u == s: S.remove(u)
        if len(S)==0: return dist,next
        Q.remove(u)
        for a in graph.predecessors_iter(u):
            v = a
            alt = dist[u] + graph [v][u]["weight"]
            if alt < dist[v]: dist[v] = alt; next[v] = u
    return dist, next


def mainKSP(graph, sources, sink, K):
"""Find the K-shortest paths from sources to sink

Return value:
-------------
As: dictionary s.t. As[s]=[K-shortest paths from s to sink for s in sources]
"""
dist, next = Dijkstra(graph, sink, sources)
A0s = {s:get_path(s, sink, next) for s in sources}
return {s : YenKSP(graph, s, sink, K, A0s[s]) for s in sources}
graphnodes = [h for h in range (1, 24)]    
path = mainKSP(network, graphnodes, 1, 3)
def Dijkstra(图形、接收器、源=无):
n=len(graph.nodes())
dist={k+1:np.inf表示范围(n)中的k}
next={k+1:范围(n)内的k无}
距离[水槽]=0.0
S=列表(源[:])
Q=范围(1,n+1)
当len(Q)>0时:
min=np.inf
对于Q中的v:
如果(距离[v]

我是一个python初学者,花了这么多时间才弄清楚S列表的错误,但没有成功。Dijkstra函数是从上面提供的另一个函数的内部调用的。

错误表明您正在为
sources
参数传入
int
。你还没有展示那个电话,所以我们不知道你为什么这么做。如果包含异常的完整回溯(而不仅仅是最后几行),我想我们也会看到调用。如何调用函数?代码经过编辑,以便您可以检查函数的调用方式。还添加了完整的追溯。谢谢该错误表明您正在为
sources
参数传递
int
。你还没有展示那个电话,所以我们不知道你为什么这么做。如果包含异常的完整回溯(而不仅仅是最后几行),我想我们也会看到调用。如何调用函数?代码经过编辑,以便您可以检查函数的调用方式。还添加了完整的追溯。谢谢