how to copy a dictionary
Neel Krishnaswami
neelk at brick.cswv.com
Tue Jan 4 21:49:14 EST 2000
More information about the Python-list mailing list
Tue Jan 4 21:49:14 EST 2000
- Previous message (by thread): how to copy a dictionary
- Next message (by thread): how to copy a dictionary
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Roy Smith <roy at popmail.med.nyu.edu> wrote: > If I do: > > d = {'hedgehog': 'spiney norman'} > temp = d > temp['scotsman'] = 'earnest potgorney' > > I end up changing the original dictionary, d. It's obvious that what's > going on is when I do temp = d I get a pointer to the same object > instead of a new object. My question is, how do I force a new object to > be created, so when modify it, I don't also modify the original? Yup. Variable assignment in Python is always a matter of rebinding. Thinking of it as pasting a label on an object, and then peeling it off and pasting it on a new object is the mental model to use. :) Your specific problem is solved with the copy module, eg: >>> import copy >>> x = {'foo': 'bar', 'baz': 'quux'} >>> x {'foo': 'bar', 'baz': 'quux'} >>> y = copy.copy(x) >>> y {'foo': 'bar', 'baz': 'quux'} >>> y['thud'] = 'garp' >>> y {'foo': 'bar', 'thud': 'garp', 'baz': 'quux'} >>> x {'foo': 'bar', 'baz': 'quux'} This creates a shallow copy of the object. If you want a deep copy, use copy.deepcopy(). Neel
- Previous message (by thread): how to copy a dictionary
- Next message (by thread): how to copy a dictionary
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Python-list mailing list