使用dict(python)中的特定键构建列表?

Xåp*_* - 4 python search dictionary list dijkstra

我正在用Python实现Dijkstra搜索算法.在搜索结束时,我使用前驱映射重建最短路径,从目标节点的前任开始.例如:

path = []
path.append(destination)
previous = predecessor_map[destination]
while previous != origin:
    path.append(previous)
    previous = predecessor_map[previous]
Run Code Online (Sandbox Code Playgroud)

有没有办法用更少的代码行(例如列表理解)来做到这一点?

NPE*_*NPE 7

我唯一的建议是摆脱轻微的代码重复:

path = []
previous = destination
while previous != origin:
    path.append(previous)
    previous = predecessor_map[previous]
Run Code Online (Sandbox Code Playgroud)

除此之外,我认为您的代码实际上非常清晰,并且不太可能从任何缩短代码的尝试中受益.

最后,值得注意的是,上述内容也适用于destination == origin,而您的原始版本很可能不会(取决于predecessor_map填充的确切程度).不知道这是否与您的用例相关.

  • @ÓscarLópez:重新思考你的downvote.在"origin == destination"的情况下,原始代码会尝试查找原点的前身,这可能引发一个`KeyError`.与原始代码的区别不是错误,它是一个错误修正! (3认同)