Ryan Strunk wrote:
Hello everyone,
How can I make two copies of a dictionary that don't point to the same
location in memory? My plan is to generate d1 and make d2 a copy of d1.
After the user modifies d1 I want him/her to be able to return to the
initial dictionary (d2) values. I tried:
d1 = {values}
That can't work, because that makes a set, not a dict (in Python 3 at
least). Perhaps you mean {key: value}, not just {value}?
d2 = dict(d1)
then later in the code when I want to re-initialize d1:
d1 = dict(d2)
but this won't work. Any suggestions you have as to how I can make this work
are welcome.
Define "this won't work". What makes you think it doesn't work? This
makes d2 a copy of d1, then makes d1 a copy of d2. They are different dicts.
My *guess* is that you're modifying the objects *inside* d1 and d2,
which are shared. To make copies of *everything*, all the way down, use
the copy module:
copy.copy # makes a shallow copy, one level only
copy.deepcopy # makes a deep copy, all the way down
--
Steven
_______________________________________________
Tutor maillist - [email protected]
To unsubscribe or change subscription options:
http://mail.python.org/mailman/listinfo/tutor