Python. 从数据库递归图树
我有一个叫做“Node”的表,里面有“id”和“name”这两个字段。同时,我还有一个叫做“Link”的表,它用来连接这些Node,形成多对多的关系。
Node id | name 1 node1 2 node2 3 node3 4 node4 5 node5 6 node4 7 node5 Link id | node_id | node2_id 1 1 2 2 2 3 3 3 5 4 2 4 5 3 6 6 3 7 node4 node7 | | node1-->node2-->node3-->node6 | node5
我想用Python来生成这个图形,或者说是一个包含嵌套的列表或字典。我在构建算法的时候遇到了问题。我有一个叫get_derrived的函数,它返回一个派生元素的列表。我的代码是:
c.tree = {}
def get_tree(node_id):
for node in get_derrived(node_id):
if not node in c.tree:
c.tree[node] = {}
get_tree(node.id)
get_tree(id)
总的来说,对于node1,我的结构是:
c.tree = {node1: {}, node2: {}, node3:{}, node4: {}, node5: {}, node6: {}, node7: {}}
对于node2,我的结构是:
c.tree = {node2: {}, node4: {}, node3: {}, node5: {}, node6: {}, node7: {}}
但是我需要的字典结构是这样的:{node2: {node4: {}, node3: {node7: {}, node5: {}, node6: {} }}}。