簡體   English   中英

我如何遍歷 python dict 並輕松到達葉子?

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

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