Python內嵌列表格式化

stackoverflow上的一個問題:

把下面的格式:

[{
    "id": 1,
    "title": "node1",
    "parent": "null"},{
    "id": 2,
    "title": "node2",
    "parent": 1},{
    "id": 3,
    "title": "node3",
    "parent": 1},{
    "id": 4,
    "title": "node4",
    "parent": 2},{
    "id": 5,
    "title": "node5",
    "parent": 2}]

更改爲:

    [{
      'id':1,
      'title':'node1',  
      'childs':[  
         {  
            'id':2,
            'title':'node2'
            'childs':[  
               {  
                  'id':4,
                  'title':'node4',
                  'childs': []
               },
               {  
                  'id':5,
                  'title':'node5',
                  'childs': []
               }
            ]
         },
         {  
            'id':3,
            'title':'node3'
            'childs':[]
         }
      ]
   }]

相關代碼:(主要用了python對象的可變性,如dict,list都是可變的.這樣對於數據的深度可以簡化)

result, t = [], {}

for i in k:    # k 爲上面的數據, k 建議按 parent 排序一下
    i['childs'] = []
    if i['parent'] == 'null':
        del i['parent']
        result.append(i)
        t[1] = result[0]
    else:
        t[i['parent']]['childs'].append(i)
        t[i['id']] = t[i['parent']]['childs'][-1]
        del t[i['parent']]['childs'][-1]['parent']

print result

結果:

Z:\DOWNLOAD>k.py
[{'childs': [{'childs': [{'childs': [], 'id': 4, 'title': 'node4'}, {'childs': [
], 'id': 5, 'title': 'node5'}], 'id': 2, 'title': 'node2'}, {'childs': [], 'id':
 3, 'title': 'node3'}], 'id': 1, 'title': 'node1'}]



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章