python - convert file path list to tree -


there python file path list below:

file_path_list = ["test/dir1/log.txt", "test/dir1/dir2/server.txt", "test/manage/img.txt"] 

i want convert tree. expect result below:

 tree_data = [     {       "path": "test",       "children": [         {           "path": "dir1",           "children": [             {               "path": "log.txt"             },             {               "path": "dir2",               "children": [                 {                   "path": "server.txt"                 }               ]             }           ]         },         {           "path": "manage",           "children": [             {               "path": "img.txt",             }           ]         }       ]     }   ] 

what's best way convert?

update: code below, think it's not well.

    def list2tree(file_path):         """convert list tree."""         tree_data = [{             "path": "root",             "children": []         }]         f in file_path:             node_path = tree_data[0]             pathes = f.split("/")             i, p in enumerate(pathes):                 length = len(node_path["children"])                 if not length or node_path["children"][length - 1]["path"] != p:                     # create new node                     new_node = {                         "path": p,                     }                     if != len(pathes) - 1:  # middle path                         new_node["children"] = list()                     node_path["children"].append(new_node)                     node_path = new_node                 else:                     node_path = node_path["children"][length - 1]         return tree_data 

i think way not best. ideas? thank much!

one way split strings @ '/' , put them in defaultdict of defaultdicts, see defaultdict of defaultdict, nested.


Comments

Popular posts from this blog

android - InAppBilling registering BroadcastReceiver in AndroidManifest -

python Tkinter Capturing keyboard events save as one single string -

sql server - Why does Linq-to-SQL add unnecessary COUNT()? -