Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 查找路径并从字典转换为列表_Python_Dictionary_Networkx_Depth First Search_Breadth First Search - Fatal编程技术网

Python 查找路径并从字典转换为列表

Python 查找路径并从字典转换为列表,python,dictionary,networkx,depth-first-search,breadth-first-search,Python,Dictionary,Networkx,Depth First Search,Breadth First Search,我正在将networkx库用于Python和BFS和DFS。我需要得到一棵树,然后探索它以获得从开始节点到结束节点的路径 对于BFS部分,我使用的是BFS_后继者,它从源代码返回广度优先搜索中后继者的迭代器 对于我正在使用的DFS部分:DFS\u继任者,它从源代码返回深度优先搜索的继任者字典 我需要从两种算法中得到一个从源到端的节点列表。每个节点都是(x,y),并且是网格中的一个单元 以下是我迄今为止所做的工作: BFS = nx.bfs_successors(mazePRIM, start)

我正在将networkx库用于Python和BFS和DFS。我需要得到一棵树,然后探索它以获得从开始节点到结束节点的路径

对于BFS部分,我使用的是
BFS_后继者
,它从源代码返回广度优先搜索中后继者的迭代器

对于我正在使用的DFS部分:
DFS\u继任者
,它从源代码返回深度优先搜索的继任者字典

我需要从两种算法中得到一个从源到端的节点列表。每个节点都是(x,y),并且是网格中的一个单元

以下是我迄今为止所做的工作:

BFS = nx.bfs_successors(mazePRIM, start)
print(dict(BFS))

DFS = nx.dfs_successors(mazePRIM, start)
print(DFS)
我明白了:

{(0, 0): [(0, 1), (1, 0)], (1, 0): [(1, 1)], (1, 1): [(1, 2)], (1, 2): [(0, 2), (1, 3)], (0, 2): [(0, 3)]}

{(0, 0): [(0, 1), (1, 0)], (1, 0): [(1, 1)], (1, 1): [(1, 2)], (1, 2): [(0, 2), (1, 3)], (0, 2): [(0, 3)]}
但我需要这样的输出:

[(0, 0), (1, 0), (1, 1), (1, 2), (1, 3)]
这是从开始到结束的节点列表


你对怎么做有什么建议吗?你能帮我吗?

使用列表理解法,并暗示在词典末尾添加
.keys()

DFS = nx.bfs_successors(mazePRIM,start)
print([n for n in dict(BFS).keys()])

DFS = nx.dfs_successors(mazePRIM, start)
print([n for n in DFS.keys()])
您可以在此处阅读有关字典键的更多信息:


您只需将字典键直接转换为列表:

DFS = nx.bfs_successors(mazePRIM,start)
print(list(dict(BFS).keys()))

DFS = nx.dfs_successors(mazePRIM, start)
print(list(dict(DFS).keys()))

非常感谢你!您还知道如何获取字典中两个元素之间的路径吗?将
.keys()
更改为
.values()
。这是否回答了您的问题?看起来您在这里问的问题与在中问的问题相同
bfs\U后继者
dfs\U后继者
本身不提供从
start
end
的路径。您可以使用
最短路径
所有简单路径
。嗨@rkersh!是的,我做了,但后来我发现答案不符合我的需要。我试图更改帖子并取消它,但我做不到,所以我写了一篇新的帖子(这篇),并得到了我需要的答案。下面的答案没有给出你在问题中所要求的答案。相反,他们使用广度优先搜索或深度优先搜索,给出从
开始可以到达的每个节点。。。