2009-11-16 2 views
2

데이터베이스에서 데이터 모델을 가지고 있습니다. 이것은 왼쪽 값으로 정렬 된 평평한 비단뱀 목록입니다.플랫 데이터를 계층 적 파이썬 목록으로 변환

>  id name  left right 
>  1 Beginning 1 6 
>  2 FOO  2 5 
>  3 BAR  3 4 
>  4 Programming 6 13 
>  5 Python  7 8 
>  7 C#  9 12 
>  8 XNA  10 11 
>  6 About  14 15 

나는 차례로 정렬되지 않은 목록으로 HTML/XML로 변환됩니다, 계층 파이썬 목록에이를 계산하고 싶습니다. 파이썬리스트는리스트 안에리스트가 있습니다.

categories = [ 
    ["programming", [ 
         ["Python", ["pygame"]], 
         ["C#", ["XNA"]], 
        ] 
    ], 
    ["FOO", [ 
       ["BAR"] 
      ] 
    ], 
] 
+4

입력 및 출력의 일관성있는 예를 제공하십시오. 예제 출력에는 예제 입력에 "아무데도 **"라는 항목이 있습니다. 어떻게 모든 프로그램을 구성 할 수 있습니까?! –

+0

당신은 "왼쪽 값으로 정렬했다"고 말하면서, 가장 왼쪽 열 (id)이 아닌 것처럼 보입니다. 어쨌든 행 사이의 관계는 어떻게 표현됩니까? 그렇지 않으면 중첩 목록을 생성 할 방법이 없습니다 –

답변

0

이 변형 선주문 트리 탐색한다.

http://www.sitepoint.com/print/hierarchical-data-database/

그래서 입력은 다음과 같이 사전의 목록을 보인다.

dbrows = [ 
    {'title': 'Food', 'lft': 1, 'rgt': 18}, 
    {'title': 'Fruit', 'lft': 2, 'rgt': 11}, 
    #etc... etc... from the linked article. 
] 

링크 된 기사의 과일 입력을 사용하십시오. 이것이 파이썬리스트로 정렬되어 원하는 것입니다.

tree = [ 
     ['Food', [ 
      ['Fruit', [ 
        ['Red', ['Cherry', 'Strawberry']], 
        ['Yellow', ['Banana']], 
      ]], 
      ['Meat', [ 
        ['Beef', 'Pork'] 
      ]], 
     ]], 
]