[Python-ideas] ordered dict

Terry Reedy tjreedy at udel.edu
Fri Apr 20 20:34:58 CEST 2007


"Mathias Panzenböck" <grosser.meister.morti at gmx.net> 
wrote in message news:4628DF1F.3060803 at gmx.net...
| Some kind of ordered dictionary would be nice to have in the
| standard library.

This has come up frequently, with 'ordered' having two quite different 
meanings.

1. Order of entry into the dictionary (for use with class definitions, for 
instance(though don't ask me why!).  When a given key is entered just once, 
this is relatively easy: just append to a subsidiary list.  I believe this 
is being at least considered for 3.0.

2. Order in the sorting or collation sense, which I presume you mean.  To 
reduce confusion, call this a sorted dictionary, as others have done.

Regardless, this has the problem that potential keys are not always 
comparable.  This will become worse when most cross-type comparisons are 
disallowed in 3.0.  So pershaps the __init__ method should require a tuple 
of allowed key types.

| e.g. a AVL tree or something like that.
...
| A alternative would be just to sort the keys of a dict but
| that's O( n log n ) for each sort. Depending on what's the more
| often occurring case (lookup, insert, get key-range, etc.) a
| other kind of dict object would make sense.
|
| What do you think?

If not already present in PyPI, someone could code an implementation and 
add it there.  When such has be tested and achieved enough usage, then it 
might be proposed for addition to the collections module.

Terry Jan Reedy






More information about the Python-ideas mailing list