Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 从表中的父子对创建jstree层次结构_Python_Json_Django_Recursion_Jstree - Fatal编程技术网

Python 从表中的父子对创建jstree层次结构

Python 从表中的父子对创建jstree层次结构,python,json,django,recursion,jstree,Python,Json,Django,Recursion,Jstree,我有一个表中的父子对, 例如: links=(("Tom","Dick"), ("Dick","Harry"), ("Tom","Larry"), ("Bob","Leroy"), ("Bob","Earl"), ("Earl","Joy"), ("Joy","Joy child"), ("Joy","Joy child2"), ("Joy child2", "Maria"))

我有一个表中的父子对, 例如:

links=(("Tom","Dick"),
       ("Dick","Harry"),
       ("Tom","Larry"),
       ("Bob","Leroy"),
       ("Bob","Earl"),
       ("Earl","Joy"), 
       ("Joy","Joy child"), 
       ("Joy","Joy child2"),
       ("Joy child2", "Maria"))
我正试图从这些对中创建jstree。我通过了各种链接,但无法让这个元组工作。任何人都可以在python中提供一个递归函数,该函数以上面提到的元组或父-子-孙子对的任何组合作为输入,并通过创建类似于此格式的json来创建层次结构

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

提前谢谢:)我真的很感谢你的帮助

到目前为止你试过什么?请参见@agold我尝试了此链接函数:有什么问题?@agold,当我在第二个答案中执行该函数时,它只生成第一级父-子节点,其他对在json中看不到。另外,正确的答案并没有给出json中的所有父子节点。@agold,这是我的错,是的,链接中的函数工作正常。谢谢你的帮助。我现在结束这个故事。
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)