Sorting a tuple that contains tuples
I have the following tuple, which contains tuples:
MY_TUPLE = ( ('A','Apple'), ('C','Carrot'), ('B','Banana'), )
I’d like to sort this tuple based upon the second value contained in inner-tuples (i.e., sort Apple, Carrot, Banana rather than A, B, C).
from operator import itemgetter MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=itemgetter(1)))
MY_SORTED_TUPLE = tuple(sorted(MY_TUPLE, key=lambda item: item))
From Sorting Mini-HOW TO
Often there’s a built-in that will
match your needs, such as str.lower().
The operator module contains a number
of functions useful for this purpose.
For example, you can sort tuples based
on their second element using
import operator L = [('c', 2), ('d', 1), ('a', 4), ('b', 3)] map(operator.itemgetter(0), L) ['c', 'd', 'a', 'b'] map(operator.itemgetter(1), L) [2, 1, 4, 3] sorted(L, key=operator.itemgetter(1)) [('d', 1), ('c', 2), ('b', 3), ('a', 4)]
Hope this helps.
sorted(my_tuple, key=lambda tup: tup)
In other words, when comparing two elements of the tuple you’re sorting, sort based on the return value of the function passed as the key parameter.
I achieved the same thing using this code, but your suggestion is great. Thanks!
templist = [ (line, line) for line in MY_TUPLE ] templist.sort() SORTED_MY_TUPLE = [ line for line in templist ]