[Python-ideas] Adding collections.abc.Ordered

Steven D'Aprano steve at pearwood.info
Sat Dec 26 23:55:12 EST 2015


On Sun, Dec 27, 2015 at 11:36:30AM +1100, Chris Angelico wrote:
> On Sun, Dec 27, 2015 at 11:34 AM, Wes Turner <wes.turner at gmail.com> wrote:
> > * collections.abc.Ordered
> > * collections.abc.Reversible
> > * collections.abc.Infinite [...]
> >
> > * collections.abc.Sorted ?
> 
> -1. Can you imagine trying to explain to everyone what the difference
> is between Ordered and Sorted? (My understanding is that Ordered has
> an inherent order, and Sorted will maintain an externally-defined
> order, but I might be wrong.)

The same problem comes up with OrderedDict. People often want a *sorted* 
dict, in the sense that it always iterates in the naive sorted order 
that sorted(dict.keys()) would give, but without having to sort the 
keys. So you will sometimes find people using "ordered" and "sorted" 
interchangably -- I must admit I've been guilty of that once or twice.

In general, though, "ordered" means *items are always in insertion 
order*, while "sorted" means "the order you would get if you sorted".

And neither may apply to data structures that order their items in 
something other than insertion order, e.g. order of frequency of use.


-- 
Steve


More information about the Python-ideas mailing list