I am trying to return a tuple the smallest second index value (y value) from a list of tuples. If there are two tuples with the lowest y value, then select the tuple with the largest x value (i.e first index).
For example, suppose I have the tuple:
x = [(2, 3), (4, 3), (6, 9)]
The the value returned should be (4, 3)
. (2, 3)
is a candidate, as x[0][1]
is 3
(same as x[1][1]
), however, x[0][0]
is smaller than x[1][0]
.
So far I have tried:
start_point = min(x, key = lambda t: t[1])
However, this only checks the second index, and does not compare two tuples first index if their second index's are equivalent.
Python tuple method min() returns the elements from the tuple with minimum value.
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.
Include the x
value in a tuple returned from the key; this second element in the key will be then used when there is a tie for the y
value. To inverse the comparison (from smallest to largest), just negate that value:
min(x, key=lambda t: (t[1], -t[0]))
After all, -4
is smaller than -2
.
Demo:
>>> x = [(2, 3), (4, 3), (6, 9)]
>>> min(x, key=lambda t: (t[1], -t[0]))
(4, 3)
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