Tree structure
Bevan Jenkins
bevan07 at gmail.com
Tue Jul 26 19:23:45 EDT 2011
On Jul 26, 8:46 pm, Peter Otten <__pete... at web.de> wrote:
> Bevan Jenkins wrote:
> > Hello,
>
> > I am trying to create a tree structure for use with a PyQt QTreeView.
> > But first I need to get my head around how to create the tree
> > structure. I have a dictionary (for testing purposes) but I will
> > later use a table via sqlalchemy.
>> SNIP<<
> > Any thoughts about how to acomplish this will be much appreciated,
> > Bevan
>
> If you turn the values into lists you can use the same function for both
> trees:
>
> INDENT = " " * 4
>
> def print_tree(lookup, node=None):
> def _tree(node, level):
> print "%s%s" % (INDENT * level, node)
> for node in lookup.get(node, ()):
> _tree(node, level+1)
>
> if node is None:
> for node in lookup:
> _tree(node, 0)
> else:
> _tree(node, 0)
>
> def reversed_dict(tree):
> reversed_tree = {}
> for key, values in rivers.iteritems():
> for value in values:
> reversed_tree.setdefault(value, []).append(key)
> return reversed_tree
>
> if __name__ == "__main__":
> rivers = {
> "little stream": "sea",
> "mountain stream": "lake",
> "lake": "big river",
> "cold spring": "big river",
> "big river": "sea",
> "see": ""}
>
> rivers = dict((k, [v]) for k, v in rivers.iteritems() if v)
> print_tree(rivers)
> print "---"
> print_tree(reversed_dict(rivers), "sea")- Hide quoted text -
>
> - Show quoted text -
Peter,
Thank you that does what I need! Now I just need to incorporate into
PyQt but that shouldn't be too hard...
Macro,
I need to look into lxml in the coming months, so I might revisit this
then.
More information about the Python-list
mailing list