7stud <[EMAIL PROTECTED]> wrote:

> Here is some example code:
> 
> d = {"a":"hello", "b":[1, 2, 3]}
> 
> x = d.copy()
> d["b"][0]=10
> print x
> 
> output:
> {'a': 'hello', 'b': [10, 2, 3]}
> 
> It looks like the key names of a dictionary store pointers to the
> values?  Or does a dictionary object manage pointers to keys and
> values, so copy() above just copies 4 pointers?

dict objects hold references (roughly the same as C pointers) to keys
and values, and dict.copy does a shallow copy.  If you want a deep copy,
import copy and x=copy.deepcopy(d) instead.

Deep copies are very costly (because they copy a lot of data bits rather
than just references), so it's quite sensible to have to ask for one
very specifically in the rare cases in which you really want it.


Alex
 
-- 
http://mail.python.org/mailman/listinfo/python-list

Reply via email to