Why aren't OrderedDicts comparable with < etc?
Steven D'Aprano
steven at REMOVE.THIS.cybersource.com.au
Thu Jul 16 03:51:29 EDT 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