簡體   English   中英

在Python中遍歷樹的最有效方法是什么?

[英]What is the most efficient way to traverse a tree in Python?

假設我有一個包含以下字段的對象列表

這定義了一個樹結構,類似於目錄樹。

我想以預購方式遍歷列表。 什么是最有效的方式?

通常,在其他(更多命令性)語言中,我會迭代值,找到沒有父項的那些,然后為每一個,再次迭代其父項是我正在查看的那個對象的每個對象,等等,但是有一個聰明的方式在Python中這樣做?

我首先創建一個更合適的數據結構 - 捕獲從父項到其子項的鏈接:

children = {}
for obj in tree:
    children.setdefault(obj.parent, []).append(obj)

def preorder(root, children):
    yield root.value
    for child in children.get(root, []):
        for value in preorder(child, children):
            yield value

for root in children[None]:
    for value in preorder(root, children):
        print value

你也可以在這里使用collections.defaultdict

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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