[Python-Dev] Mundane dict __setitem__...

David Abrahams dave@boost-consulting.com
Tue, 03 Jun 2003 11:17:52 -0400


Samuele Pedroni <pedronis@bluewin.ch> writes:

> At 08:09 03.06.2003 -0400, David Abrahams wrote:
>
>>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.
>
>
> that's not the case with Jython, i.e. the assert will fail in Jython.

Why doesn't Jython work like CPython in this regard?

> Dicts are equality not identity dicts so both behavior, as I see it,
> are fine. In the end what happens with the fragment is unspecified.

Unless someone accepts my patch ;-)

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com