2009-11-16 2 views
2

У меня есть модель данных из моей базы данных. Это плоский список python, отсортированный по левым значениям.Преобразование плоских данных в иерархический список python

>  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 в качестве маркированного списка. Список python будет списком в списках.

Пример

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

Пожалуйста, дайте самосогласованной пример ввода и вывода - ваш пример вывода не имеет запись «Pygame», что это ** ** нигде на вашем примере ввода, как может любая программа, возможно, сделать это ?! –

+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. 
] 

Использование материала для фруктов из связанной статьи. Это то, что я хочу, отсортированный как список python.

tree = [ 
     ['Food', [ 
      ['Fruit', [ 
        ['Red', ['Cherry', 'Strawberry']], 
        ['Yellow', ['Banana']], 
      ]], 
      ['Meat', [ 
        ['Beef', 'Pork'] 
      ]], 
     ]], 
] 
Смежные вопросы