python 將樹列表轉換為層次結構dict

2021-09-12 11:14:22 字數 2288 閱讀 7797

class node:

def __init__(self, parent, name):

self.parent = parent

self.name = name

# 建立乙個根節點物件

root = node(none, "root")

# 根節點下有 三個子節點

node1 = node(root, "node1")

node2 = node(root, "node2")

node3 = node(root, "node3")

# node1 下有2個節點 node11 和 node12

node11 = node(node1, "node11")

node12 = node(node1, "node12")

# node2 下有3個節點 node21 node22 和 node23

node21 = node(node2, "node21")

node22 = node(node2, "node22")

node23 = node(node2, "node23")

# node23 下有1個節點 node231

node231 = node(node23, "node231")

# node231 下有2個節點 node2311 node2312

node2311 = node(node231, "node2311")

node2312 = node(node231, "node2312")

## ......

node_list = [root, node1, node2, node3, node11, node12, node21, node22, node23, node231, node2311, node2312]
def build_tree(nodes, parent):

"""從某個節點開始構建其樹列表的 dict 結構

:param nodes: 被查詢的節點列表 可理解為整個樹結構中所有的節點列表

:param parent: 當前節點的父節點

:return:

"""# 建立 node_list 用來記錄該節點下的所有(直接和間接)節點列表

# 在不存在 merge 的情況下,刪除該節點時,該列表中的節點應該被全部刪除

node_list = list()

# create empty tree to fill

tree = dict()

# 遞迴構建

build_tree_recursive(tree, parent, nodes, node_list)

return tree, node_list

def build_tree_recursive(tree, parent, nodes, node_list):

"""遞迴構建的過程

:param tree:

:param parent: 遞迴過程中當前的父節點

:param nodes:

:param node_list: 該節點下的所有直接和間接列表

將列表轉換為字典 Python3

方法一 利用zip 函式,將兩個列表轉為乙個字典 list1 heather quincy sea list2 beautiful hansome energetic dict dict zip list1,list2 zip 函式返回乙個可迭代物件,dict 將其轉為字典 print dict 方...

Python將兩個列表轉換為字典

現有2個列表 keys name age food values monty 42,spam 需要將轉換為字典,結果如下 a dict 那麼最簡單的方法是什麼呢?最開始,我是想用2層for迴圈實現,但是發現太麻煩了。最簡單的方法,使用zip 函式即可。zip 函式用於將可迭代的物件作為引數,將物件中...

Python 字典轉換為列表

說明 列表不可以轉換為字典 轉換後的列表為無序列表 a 字典中的key轉換為列表 key value list a.keys print 字典中的key轉換為列表 key value 字典中的value轉換為列表 value list list a.values print 字典中的value轉換為...