[Python-Dev] Mundane dict __setitem__...

Guido van Rossum guido@python.org
Tue, 03 Jun 2003 09:01:15 -0400


> I am about to write some code which relies on the following:
> 
>     x = (1,2,3)
>     y = (1,2,3)
>     d = {}
>     d[x] = 1
>     d[y] = 1
>     assert d.keys()[0] is y
> 
> In other words, when you do d[k] = v it replaces both v *and* k in the
> dict.  I couldn't find it documented anywhere but the source.  I
> submitted a doc patch which enshrines that behavior, but since Guido
> doesn't always know what's in the doc I wanted to make sure it was
> considered reasonable.
> 
> Anyone want to tell me it's a bad idea?  It seems like the more useful
> of the two possible behaviors to me.

Bad idea.  There are no guarantees whether the key will be updated or
not.  (There is also no rule that forbids the compiler from making x
and y point to the same object, BTW.)

--Guido van Rossum (home page: http://www.python.org/~guido/)