Possible Duplicate:
Sorting or Finding Max Value by the second element in a nested list. Python
I have a list with ~10^6 tuples in it like this:
[(101, 153), (255, 827), (361, 961), ...] ^ ^ X Y
I want to find the maximum value of the Ys in this list, but also want to know the X that it is bound to.
How do I do this?
To find maximum of items in a Tuple in Python, use max() builtin function. We can also provide a key function for max() to transform the items and then find the maximum of those values.
Initial approach that can be applied is that we can iterate on each tuple and check it's count in list using count() , if greater than one, we can add to list. To remove multiple additions, we can convert the result to set using set() .
min(): gives the smallest element in the tuple as an output. Hence, the name is min(). For example, max(): gives the largest element in the tuple as an output.
Use max()
:
Using itemgetter()
:
In [53]: lis=[(101, 153), (255, 827), (361, 961)] In [81]: from operator import itemgetter In [82]: max(lis,key=itemgetter(1))[0] #faster solution Out[82]: 361
using lambda
:
In [54]: max(lis,key=lambda item:item[1]) Out[54]: (361, 961) In [55]: max(lis,key=lambda item:item[1])[0] Out[55]: 361
timeit
comparison:
In [30]: %timeit max(lis,key=itemgetter(1)) 1000 loops, best of 3: 232 us per loop In [31]: %timeit max(lis,key=lambda item:item[1]) 1000 loops, best of 3: 556 us per loop
In addition to max, you can also sort:
>>> lis [(101, 153), (255, 827), (361, 961)] >>> sorted(lis,key=lambda x: x[1], reverse=True)[0] (361, 961)
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With