[英]How can i iterate through a python dict and reach easily the leaves?
我正在嘗試迭代一個graph-dict對象並在每次離開節點時都到達,並且我想針對圖表的不同深度級別進行此操作(如果葉子處於更深的級別)
{'Node': [0, 0, 0],
'children': [{'Node': [1, 0, 0],
'children': [{'Node': [2, 0, 0], 'children': []},
{'Node': [1, 1, 0], 'children': []},
{'Node': [1, 0, 1], 'children': []}]},
{'Node': [0, 1, 0],
'children': [{'Node': [1, 1, 0], 'children': []},
{'Node': [0, 2, 0], 'children': []},
{'Node': [0, 1, 1], 'children': []}]},
{'Node': [0, 0, 1],
'children': [{'Node': [1, 0, 1], 'children': []},
{'Node': [0, 1, 1], 'children': []},
{'Node': [0, 0, 2], 'children': []}]}]}
特別是我想用這個葉子節點做一些事情,(我有一個可以添加其他子節點的函數)但是具有並行邏輯,使用像多處理或joblib exc這樣的庫。
在這種情況下,您可以使用遞歸。 下面是一個示例代碼。
graph={'Node': [0, 0, 0],
'children': [{'Node': [1, 0, 0],
'children': [{'Node': [2, 0, 0], 'children': []},
{'Node': [1, 1, 0], 'children': []},
{'Node': [1, 0, 1], 'children': []}]},
{'Node': [0, 1, 0],
'children': [{'Node': [1, 1, 0], 'children': []},
{'Node': [0, 2, 0], 'children': []},
{'Node': [0, 1, 1], 'children': []}]},
{'Node': [0, 0, 1],
'children': [{'Node': [1, 0, 1], 'children': []},
{'Node': [0, 1, 1], 'children': []},
{'Node': [0, 0, 2], 'children': []}]}]}
def collect_children(nodes):
children=[]
for node in nodes:
if len(node['children'])!=0:
children+=node['children']
return children
def get_leaves(nodes, depth):
if depth==0:
return []
elif depth==1:
return collect_children(nodes)
else:
return get_leaves(collect_children(nodes),depth-1)
print(get_leaves([graph],2))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.