In article <[EMAIL PROTECTED]>,
Terry Reedy <[EMAIL PROTECTED]> wrote:
> Yes, key= lets you sort anything anyway you want.
> >>> l=[1, '2', 3j]
> >>> sorted(l, key = str)
> [1, '2', 3j]
The problem here is that str() is degenerate, i.e. a != b does not imply
str(a) != str(b).
> >>> sorted(l, key = id)
> ['2', 3j, 1]
And of course, this has to opposite problem, a == b does not imply id(a) ==
id(b). Whether either of these "problems" is really a problem obviously
depends on what you're trying to do.
In 3.0, can you still order types? In 2.x, you can do:
>>> t1 = type(1)
>>> t2 = type(1j)
>>> t1 < t2
False
If this still works in 3.0, then you can easily do something like:
def total_order(o1, o2):
"Compare any two objects of arbitrary types"
try:
return o1 <= o2
except UncomparableTypesError: # whatever the right name is
return type(o1) <= type(o2)
and get the same effect as you had in 2.x.
--
http://mail.python.org/mailman/listinfo/python-list