如何使用带字典的堆来实现单源最短路径算法?

How to use heaps with dictionaries to implement single source shortest path algorithm?

我选择将我的图形表示为嵌套字典:

graph = {'A': {"B": 20, 'D': 80, 'G' :90},
        'B': {'F' : 10},
        'F':{'C':10,'D':40},
        'C':{'D':10,'H':20,'F':50},
        'D':{'G':20},
        'G':{'A':20},
        'E':{'G':30,'B':50},
        'H':{}}

并且从上一个问题中,我被指示使用堆来实现 dijkstra 单源最短路径算法。问题是,在我检查了堆的文档之后,发现我不能直接将它与字典一起使用,而是与列表一起使用。我怎么做?我的解决方案有什么问题?

你仍然可以使用堆,即使它需要一个列表。 graph.keys() returns 字典中的键列表。然后可以使用键构建堆,如果需要查找顶点,可以使用字典查找。

vertexes = graph[heap.pop()].