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