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