[Python-Dev] Equal but different keys in dicts (original) (raw)
Michael Chermside mcherm at mcherm.com
Sun Jul 11 05:06:12 CEST 2004
- Previous message: [Python-Dev] Python 2.4a1 use of c:\winnt directory
- Next message: [Python-Dev] Equal but different keys in dicts
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Suppose you create two objects which are, in fact, different, but which are == to each other.
class AllEqual: ... def init(self, name): ... self.name = name ... def repr(self): ... return self.name ... def eq(self, other): ... return 1 ... def hash(self) ... return 47 ... a = AllEqual('a') b = AllEqual('b') a == b 1
Now use one as a key in a dict, then try re-setting that value:
map = {a:'one'} map {a: 'one'} map[b] = 'two' map {a: 'two'}
That last line could just as well have read "{b: 'two'}", but the implementation of dict keeps the ORIGINAL key rather than using the NEW key. This is the behavior of both CPython and Jython.
My question is this: is this behavior intentional, or is it an "implementation detail"? If intentional, is there a reason for the choice, or is it just that one or the other behavior needed to be chosen?
[PS: I'm hoping that a good answer to this question will allow me to close bug 748126]
-- Michael Chermside
- Previous message: [Python-Dev] Python 2.4a1 use of c:\winnt directory
- Next message: [Python-Dev] Equal but different keys in dicts
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]