# Sort a list of tuples by 2nd item (integer value)?

Sort a list of tuples by 2nd item (integer value)?

Try to use the key keyword with sorted().

```sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)], key=lambda x: x)
```

key ought to be a operate that identifies a way to retrieve the comparable component from your arrangement. In your case, it’s the second component of the tuple, therefore we have a tendency to access .

For optimisation, see jamylak’s response mistreatment itemgetter(1), that is basically a quicker version of lambda x: x.

Try this code:

```>>> from operator import itemgetter
>>> data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]
>>> sorted(data,key=itemgetter(1))
[('abc', 121), ('abc', 148), ('abc', 221), ('abc', 231)]
```

IMO using itemgetter is more readable in this case than the solution by @cheeken. It is
rather than through the use of lambda.

```>python -m timeit -s "from operator import itemgetter; data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=itemgetter(1))"
1000000 loops, best of 3: 1.22 usec per loop
>python -m timeit -s "data = [('abc', 121),('abc', 231),('abc', 148), ('abc',221)]" "sorted(data,key=lambda x: x)"
1000000 loops, best of 3: 1.4 usec per loop
```

This is how you sort a list of tuples by the 2nd item in descending order.

```sorted([('abc', 121),('abc', 231),('abc', 148), ('abc',221)],key=lambda x: x, reverse=True)

```