2015-11-24 79 views
0

jstree層次我有一個父子對錶, 例如:創建一個從父子對從表

links=(("Tom","Dick"), 
     ("Dick","Harry"), 
     ("Tom","Larry"), 
     ("Bob","Leroy"), 
     ("Bob","Earl"), 
     ("Earl","Joy"), 
     ("Joy","Joy child"), 
     ("Joy","Joy child2"), 
     ("Joy child2", "Maria")) 

,我想從這個對創建jstree。我經歷了各種鏈接,但無法讓這個元組工作。任何人都可以請提供Python中的遞歸函數,它接受的元組的上方或親子盛大孩子對作爲輸入的任何組合提及並通過創建類似這樣的格式

{ 
    "name": "Tom", 
    "children": [ 
     { 
      "name": "Dick" 
     } 
    ] 
} 

謝JSON創建一個層次你提前:)我真的很感謝你的幫助!

+0

你到目前爲止嘗試過什麼?請參閱[如何提出一個好問題。](http://stackoverflow.com/help/how-to-ask) – agold

+0

@agold我試過這個鏈接函數:http://stackoverflow.com/questions/18025130/recursively- build-hierarchical-json-tree-in-python – yash

+0

[此答案](http://stackoverflow.com/a/18025360/1771479)有什麼問題? – agold

回答

0
import json 

links = (("Tom","Dick"),("Dick","Harry"),("Tom","Larry"),("Tom","Hurbert"),("Tom","Neil"),("Bob","Leroy"),("Bob","Earl"),("Tom","Reginald")) 

name_to_node = {} 
root = {'name': 'Root', 'children': []} 
for parent, child in links: 
    parent_node = name_to_node.get(parent) 
    if not parent_node: 
     name_to_node[parent] = parent_node = {'name': parent} 
     root['children'].append(parent_node) 
    name_to_node[child] = child_node = {'name': child} 
    parent_node.setdefault('children', []).append(child_node) 

print json.dumps(root, indent=4)