> Dear list members > > I have this python list that represets a sitemap: > > tree = [{'indent': 1, 'title':'Item 1', 'hassubfolder':False}, > {'indent': 1, 'title':'Item 2', 'hassubfolder':False}, > {'indent': 1, 'title':'Folder 1', 'hassubfolder':True}, > {'indent': 2, 'title':'Sub Item 1.1', 'hassubfolder':False}, > {'indent': 2, 'title':'Sub Item 1.2', 'hassubfolder':False}, > {'indent': 1, 'title':'Item 3', 'hassubfolder':False}, > {'indent': 1, 'title':'Folder 2', 'hassubfolder':True}, > {'indent': 2, 'title':'Sub Item 2.1', 'hassubfolder':False}, > {'indent': 2, 'title':'Folder 2.1', 'hassubfolder':True}, > {'indent': 3, 'title':'Sub Item 2.1.1', 'hassubfolder':False}, > {'indent': 3, 'title':'Sub Item 2.1.2', 'hassubfolder':False}, > > If an item of the list has 'True' for the 'hassubfolder' key than a new > "<ul><li>" must be created instead of "</li>" after its title. (See > "Folder 2" node in the HTML code above.
Or you can change your list to a dict with a tree structure and use recursion instead of a stack: tree = [ { 'title': 'Item 1', 'children': [] }, { 'title': 'Item 2', 'children': [] }, { 'title': 'Folder 1', 'children': [ { 'title': 'sub item 1.1', 'children' : [], }, { 'title': 'Folder 1.1', 'children' : [ .. ], }, ] }, ] and something like: def displayListItem(i): print '<li>%s' % i['title'] if i['children']: print '<ul>' for c in i['children']: displayListItem(c) print '</ul>' print </li> you might also use recursion with your existing list, by 'pop'ing the first item and passing the rest of the list. Remi
-- http://mail.python.org/mailman/listinfo/python-list