max() of a list of tuples
Jeff Epler
jepler at unpythonic.net
Tue Jan 21 17:46:34 EST 2003
On Tue, Jan 21, 2003 at 10:20:54PM -0000, Lee Harr wrote:
> > Here's another way:
[using sort with a comparison function]
>
> Yup, that is the way I would go also.
>
> Very simple & straightforward.
>
> (tho I might not have used a lambda ;-)
However, you can find the maximum of a list in O(n) comparisons, but you
can only sort a list in O(n log n) comparisons. I'd endorse a variant of
DSU (decorate, sort, unsort) which would be decorate, max, undecorate.
I think you were calling the largest tuple the one whose final element was
greatest, in which case the following code seems likely:
def decorate(t): return (t[-1], t)
def undecorate(t): return t[1]
def decorated_max(l):
l = [decorate(t) for t in l]
return undecorate(max(l))
Jeff
More information about the Python-list
mailing list