[英]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.