2009-11-16 6 views
2

J'ai un modèle de données de ma base de données. Ceci est une liste plate de python triée par les valeurs de gauche.Convertir des données à plat en une liste hiérarchique 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 

Je voudrais calculer cela en une liste python hiérarchique, qui à son tour sera converti en HTML/XML comme une liste non ordonnée. La liste python avec une liste dans les listes.

Exemple

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

S'il vous plaît donner un exemple d'auto-cohérent d'entrée et de sortie - votre exemple de sortie a un « pygame » entrée qui est nulle part ** ** sur votre entrée exemple, comment un programme pourrait faire jusqu'à ?! –

+0

vous avez dit "trié par les valeurs de gauche", ne semble pas être, ni par la colonne la plus gauche (id), de toute façon comment est la relation entre les lignes représentées, sinon il n'y a pas moyen de construire une liste imbriquée –

Répondre

0

Ceci est un arbre précommander modifié traversal.

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

Donc, l'entrée ressemble à ceci, une liste de dictionnaires.

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

Utilisation de l'entrée de fruits de l'article lié. C'est ce que je veux, trié comme une liste python.

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