python - 查找路径并从字典转换为列表
问题描述
我正在使用带有 BFS 和 DFS 的 Python 的 networkx 库。我需要得到一棵树,然后探索它以获取从起始节点到结束节点的路径。
对于我正在使用的 BFS 部分bfs_successors
,它从源代码返回广度优先搜索中的后继迭代器。
对于我正在使用的 DFS 部分:dfs_successors
它从源返回深度优先搜索的继承者字典。
我需要从两种算法中获取从源到端的节点列表。每个节点是 (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()])
您可以在此处阅读有关字典键的更多信息:
推荐阅读
- javascript - 将字符串转换为 DOM 后,对象作为 React 子项无效
- c - 无法完成写入 EEPROM,因为它会重置电路板
- javascript - 将 JQuery 函数从 keyup 更改为提交
- aws-lambda - 我可以在 AWS Cognito 中为 sign_in 和 sign_up 过程设置不同的回调 URL 吗?
- javascript - 使用 setTimeout() 进行优化
- typescript - 禁止字符串类型索引签名的数字属性
- python - 缺少 1 个必需的位置参数 - 财务
- javascript - 为什么我不能在 Mongoose 中使用异步转换器?
- kubernetes - 在 pod 上禁用 Kubernetes ClusterIP 服务环境变量
- python - 使用 Python 从特殊类型的 URL 中提取所有文本