Sort a list of tuples depending on two elements
Question:
I have a list of tuples, like so:
[
('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3),
('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)
]
I know that, for example to sort them by the second element, I can use:
sorted(unsorted, key = lambda element : element[1])
But how can I sort the list depending on multiple keys?
The expected result should be like:
[
('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3),
('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)
]
Answers:
sorted(unsorted, key=lambda element: (element[1], element[2]))
I’ve assumed an order for the keys from the sample output.
I have a list of tuples, like so:
[
('a', 4, 2), ('a', 4, 3), ('a', 7, 2), ('a', 7, 3),
('b', 4, 2), ('b', 4, 3), ('b', 7, 2), ('b', 7, 3)
]
I know that, for example to sort them by the second element, I can use:
sorted(unsorted, key = lambda element : element[1])
But how can I sort the list depending on multiple keys?
The expected result should be like:
[
('a', 4, 2), ('b', 4, 2), ('a', 4, 3), ('b', 4, 3),
('a', 7, 2), ('b', 7, 2), ('a', 7, 3), ('b', 7, 3)
]
sorted(unsorted, key=lambda element: (element[1], element[2]))
I’ve assumed an order for the keys from the sample output.