data structure

Jason tenax.raccoon at gmail.com
Sun Sep 3 22:41:17 CEST 2006


noro wrote:
> Hello again.
>
> I have a task i need to do and i can't seem to find an elegent
> solution.
> i need to make a tree like data structure (not necessry a binary tree).
>
>
> i would like each node to access his sons in a dicionary kind of why,
> for example: if  ROOT node has the name 'A' and 'AA', 'AB' are his
> sons, and 'ABA' is 'AB son etc' (in this name scheme the letters from
> left to right shows the route from the root to the node) then
> ROOT['AB'] will point to 'AB' node and ROOT['AB'][ABA'] will point to
> 'ABA' node.
>
> the tree does not have to be symmarical and every node link to
> different number of nodes. two nodes can have the same name if they are
> in a different location in the tree. so ROOT['factory1]['manager'] and
> ROOT['factory2']['manager'] can be in the same tree and point to
> different objects.
>
> all up to now i can manage.
> ---------------------
> my problem is this: i would like to find a way to easly construct the
> tree by giving some simple template, somthing similer to:
> "
> ROOT={'factory1':FACTORY,'facory2':FACTORY,'linux':OS,'windows':OS}
> FACTORY={'manager':EMPLOEY,'worker':EMPLOEY,'office':BUILDING,'......}
> OS={'ver':VERSION,'problems':LIST,....}
> "
> i started bulding the class NODE as an extention of  "dict" with the
> keys are the childern names and the items are the next node reference.
> the proablem was that as you can see from the above example 'factory1'
> and 'factory2' point to the same object. i would like to have 2
> different objects of FACTORY. making FACTORY a template and not an
> object.
>
> i'll appreciate any comment
> amit

You can make a shallow copy of a dictionary using the dictionary's copy
method.  To make a completely new copy, use the deepcopy function in
the copy module.  Please see the copy module's documentation on the
limits and differences between deep copies and shallow copies.
(http://docs.python.org/lib/module-copy.html)

     --Jason




More information about the Python-list mailing list