Eduardo Suarez-Santana wrote:
El 13/01/12 11:33, Eduardo Suarez-Santana escribió:
I wonder whether this is normal behaviour.

Even simpler:

$ python
Python 2.7.2 (default, Oct 31 2011, 11:54:55)
[GCC 4.5.3] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> r={'a':1};
>>> d={};
>>> d['x']=r;
>>> d['y']=r;
>>> d['x']['a']=3
>>> d['y']
{'a': 3}
>>>

yes it is.

>>> d['x']=r;
>>> d['y']=r;

means that both d['x'] and d['y'] name the same object r. If you change r, you'll see these changes wheter using d['x'] or d['y'].

The operator '=' does not copy objects, it binds an object to a name, and an object can have multiple names.
Use the dictionary copy method to copy a dictionary:

d['x'] = r.copy()

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

Reply via email to