[英]How to recover the path from a pair of (parent, child) in dictionary in python?
我有一個字典key:set
key
是一個帶有字符串的子節點,它的value
是一個包含其父節點字符串的set
。
例如
startnode = "hit"
endnode = "cog"
mydict = {'hot': {'hit'}, 'dot': {'hot'}, 'lot': {'hot'},
'dog': {'dot'}, 'log': {'lot'}, 'cog': {'dog', 'log'}}
'cog': {'dog', 'log'}
:表示dog
和log
都指向子節點cog
如何從任意兩個節點恢復所有可能的路徑?
在這個例子中,結果將是
res = [["hit","hot","dot","dog","cog"],
["hit","hot","lot","log","cog"]]
我嘗試使用loop
,但我失敗了,因為每個孩子都可以有arbitrary
父母。 有什么想法嗎?
首先創建一個字典,鍵是父項,值是鍵的子項。 然后運行任何路徑查找算法( bfs
或dfs
)以查找所有可能的路徑。
要根據您擁有的內容創建字典:
from collections import defaultdict
adjacency = defaultdict(set)
for key in mydict:
for node in mydict[key]:
adjacency[node].add(key)
結果是:
defaultdict(set,
{'dog': {'cog'},
'dot': {'dog'},
'hit': {'hot'},
'hot': {'dot', 'lot'},
'log': {'cog'},
'lot': {'log'}})
你可以閱讀這篇文章來解釋和實現 bfs 和 dfs 在 python 中的實現。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.