Why aren't OrderedDicts comparable with < etc?

Steven D'Aprano steven at REMOVE.THIS.cybersource.com.au
Thu Jul 16 09:51:29 CEST 2009


On Thu, 16 Jul 2009 00:30:26 -0700, Chris Rebert wrote:

> On Wed, Jul 15, 2009 at 11:21 PM, Mark Summerfield<list at qtrac.plus.com>
> wrote:
>> Hi,
>>
>> I'm just wondering why <, <=, >=, and > are not supported by
>> collections.OrderedDict:
>>
>>    >>> d1 = collections.OrderedDict((("a",1),("z",2),("k",3))) d2 =
>>    >>> d1.copy()
>>    >>> d2["z"] = 4
>>    >>> d1 == d2
>>    False
>>    >>> d1 < d2
>>    Traceback (most recent call last):
>>    File "<pyshell#6>", line 1, in <module>
>>        d1 < d2
>>    TypeError: unorderable types: OrderedDict() < OrderedDict()
>>
>> It just seems to me that since the items in ordered dictionaries are
>> ordered, it would make sense to do an item by item comparison from
>> first to last item in exactly the same way that Python compares lists
>> or tuples?
> 
> Use case? I'm curious.


Surely it would be the same use case as for comparing two lists? There 
doesn't need to be a special "OrderedDict use case" beyond "an 
OrderedDict is just like a list of (key,value) tuples, but searches are 
faster".

Or maybe not. If OrderedDicts are sequences as well as mappings, then we 
should be able to sort them. And that seems a bit much even for me.



-- 
Steven



More information about the Python-list mailing list