Sorting a list with entries of unequal types
Steven D'Aprano
steve at REMOVE-THIS-cybersource.com.au
Thu Jan 28 20:11:05 EST 2010
On Fri, 29 Jan 2010 11:01:21 +1100, Ben Finney wrote:
> So how should I be sorting a list with entries of “unequal types” such
> that it will work in Python 3?
That depends on how you want the items to be sorted. Python 2.x sorted
unequal types in some arbitrary but consistent order. If that's all you
want, then a key function like this will work in Python 3.1:
>>> foo = [1, True, 'green', 4, -27, 15.3]
>>> foo.sort()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: unorderable types: str() < bool()
>>> foo.sort(key=lambda x: (str(type(x)), x))
>>> foo
[True, 15.3, -27, 1, 4, 'green']
If you want to match the sort order from a specific version of Python, or
if you want a specific ordering, you'll need to write your own key
function.
--
Steven
More information about the Python-list
mailing list