Why aren't OrderedDicts comparable with < etc?

Jack Diederich jackdied at gmail.com
Thu Jul 16 03:12:20 EDT 2009


On Thu, Jul 16, 2009 at 2:21 AM, 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?

>>> import this
In the face of ambiguity, refuse the temptation to guess.

It isn't an OrderedDict thing, it is a comparison thing.  Two regular
dicts also raise an error if you try to LT them.  What does it mean
for a dict to be greater than or less than its peer?  Nothing, so we
refuse to guess.

-Jack



More information about the Python-list mailing list