[Python-Dev] Proposal: add odict to collections
Armin Ronacher
armin.ronacher at active-4.com
Sun Jun 15 08:07:47 CEST 2008
Raymond Hettinger <python <at> rcn.com> writes:
> For an insertion order dictionary, there was also a question about
> how to handle duplicate keys.
>
> Given odict([(k1,v1), (k2,v2), (k1,v3)]), what should the odict.items() return?
>
> [(k1,v3), (k2,v2)]
> [(k2,v2), (k1,v3)]
All the ordered dict implementations I saw behave like this:
>>> odict([(1, 'foo'), (2, 'bar'), (1, 'baz')]).items()
[(1, 'baz'), (2, 'bar')]
And that makes sense because it's consistent with the dict interface.
But I guess that is a pretty small issue and most of the time you are
not dealing with double keys when using an ordered dict.
> IIRC, previous discussions showed an interest in odicts but that
> there were a lot of questions of the specific semantics of the API.
No doubt there. But
> This would no doubt be compounded by attempts to emulate
> dict views. Regardless, there should probably be a PEP and
> alternate pure python versions should be posted on ASPN so people
> can try them out.
That's true, but by now there are countless of ordered dict implementations
with a mostly-compatible interface and applications and libraries are
using them already.
I have an example implementation here that incorporates the ideas
from ordereddict, Django's OrderedDict and Babel's odict:
http://dev.pocoo.org/hg/sandbox/raw-file/tip/odict.py
Regards,
Armin
More information about the Python-Dev
mailing list