theguyty - 8 months ago 38

Python Question

I am trying to iterate through a list of tuples like this:

`[(0, 0.0083553666846612491), (1, 0.0054999681509501821)]`

and find the smallest value on the right hand side of the tuple and then save the accompanying left hand side value to a variable.

What would the best way to go about this problem be?

Answer

You can use the `key`

argument to the `min()`

function to find the tuple with the smallest second value:

```
>>> l = [(0, 0.0083553666846612491), (1, 0.0054999681509501821)]
>>> smallest = min(l, key=lambda x: x[1])[0]
>>> smallest
1
```

Here a lambda expression is used to select the second item of each tuple and `min`

uses that value in its comparisons. `min()`

returns the full tuple, so you can extract the first item using `[0]`

.

You can also use `operator.itemgetter`

:

```
>>> from operator import itemgetter
>>> smallest = min(l, key=itemgetter(1))[0]
>>> smallest
1
```

Source (Stackoverflow)