[Python-Dev] Tuples and underorderable types (original) (raw)

Raymond Hettinger python at rcn.com
Fri Apr 24 20:19:39 CEST 2009


Would it make sense to provide a default ordering whenever the types are the same? This doesn't work when they are not the same :-)

_ ~ @ @ _/

Instead, you could make the decorating a bit more sophisticated:

decorated = [(key, id(value), value) for key, value in blah(values)] or even: decorated = [(key, n, value) for n, key, value in enumerate(blah(values))]

I already do something along those lines in heapq.nsmallest() and nlargest() to preserve sort stability. The real issue isn't how to fix one particular module. The problem is that a basic python pattern is now broken in a way that may not readily surface during testing.

I'm wondering if there is something we can do to mitigate the issue in a general way. It bites that the venerable technique of tuple sorting has lost some of its mojo. This may be an unintended consequence of eliminating default comparisons.

Raymond



More information about the Python-Dev mailing list