Why aren't OrderedDicts comparable with < etc?

Terry Reedy tjreedy at udel.edu
Thu Jul 16 14:50:41 EDT 2009


Mark wrote:
> On 16 July, 10:21, Piet van Oostrum <p... at cs.uu.nl> wrote:

>> But why should the order be as if the OrderedDict was a list of tuples.
>> A dict can be considered as a mapping and then you might want to treat
>> either the key or the value as contravariant (the key I guess). So there
>> is ambiguity. Why would the view as a list of tuples for the ordering be
>> the `natural' view?
>>
>> Maybe you may expect some kind of monotonicity such that d1<d2 implies
>> d1[x]<d2[x], but that doesn't work for d1 = {1:10, 2:20} and d2 = {1:15,
>> 2:5}. So maybe there is only a partial ordering?
> 
> OK, that seems to me to be a convincing argument against supporting
> ordering.

To put the above in a slightly different way. OrderedDicts are a 
recently added niche class that Raymond added to what is mostly his 
collections module because there are enough few use cases. There was 
pydev discussion which included the idea, I believe, that they should 
fundamentally be dicts, not lists. Regardless, the justifying use cases 
did not include a need to compare OrderedDicts. The small fraction of 
the few use cases for OrderedDicts that do require comparision can be 
met by extracting the needed sequences and comparing *them* in the 
appropriate manner. The 'appropriate manner' is not likely to always be 
the same. This point may have come up in the discussion, but I would let 
you check for sure if curious.

'Consistency' is a Python design principle, but it is balanced with 
others, so that it is not sufficient reason to add nearly useless 
features. There is a cost to every addition.

Terry Jan Reedy




More information about the Python-list mailing list