簡體   English   中英

如何從python字典中的一對(父、子)恢復路徑?

[英]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'} :表示doglog都指向子節點cog

如何從任意兩個節點恢復所有可能的路徑?

在這個例子中,結果將是

res = [["hit","hot","dot","dog","cog"],
       ["hit","hot","lot","log","cog"]]

我嘗試使用loop ,但我失敗了,因為每個孩子都可以有arbitrary父母。 有什么想法嗎?

首先創建一個字典,鍵是父項,值是鍵的子項。 然后運行任何路徑查找算法( bfsdfs )以查找所有可能的路徑。

要根據您擁有的內容創建字典:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM