2013-03-30 97 views
1

我有一個對象本身和要通過時間對它進行排序(線第一,指向第二)在每一維(簡化JSON):排序多維JSON對象

[{ 
    "type":"point" 
}, 
{ 
    "type":"line", 
    "children": [ 
     { 
      "type":"point" 
     }, 
     { 
      "type":"point" 
     }, 
     { 
      "type":"line" 
     } 
    ] 

}, 
{ 
    "type":"point"  
}] 

漁政可以更深,並有更多的點/線在彼此。

排序輸出將是這樣的:

[{ 
    "type":"line", 
    "children": [ 
     { 
      "type":"line" 
     }, 
     { 
      "type":"point" 
     }, 
     { 
      "type":"point" 
     } 
    ] 

}, 
{ 
    "type":"point" 
}, 
{ 
    "type":"point"  
}] 

感謝

+1

...和?你在哪裏遇到麻煩?你有什麼嘗試? (你是真的用JSON對象來做這件事,或者 - 我認爲這很可能 - Python數組和字典...?) –

回答

2

你需要遞歸處理這樣的:

from operator import itemgetter 

def sortLinesPoints(data): 
    if isinstance(data, dict): 
     if 'children' in data: 
      sortLinesPoints(data['children']) 
    else: 
     for elem in data: 
      sortLinesPoints(elem) 
     data.sort(key=itemgetter('type')) 
+0

真棒,它可以工作,但是我怎麼做到這一點,所以點來在線之前,所以我知道?謝謝你的回答。 – Kivylius

+2

@CezarisLT:向'sort()'方法添加'reversed = True'。 –