Преобразование плоских данных в иерархический список питонов - PullRequest
2 голосов
/ 16 ноября 2009

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

>     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

Я хотел бы вычислить это в иерархический список Python, который, в свою очередь, будет преобразован в HTML / XML как неупорядоченный список. Список Python с списками в списках.

Пример

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

1 Ответ

0 голосов
/ 16 ноября 2009

Это модифицированный обход дерева предзаказа.

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']
             ]],
        ]],
]
...