Sorting a List with Multiple Keys, Including One in Reverse Order
When working with lists of tuples, we may encounter the need to sort them based on multiple criteria, one of which should be in reverse order. This article addresses this challenge, providing a Pythonic approach to sorting a list by two keys, with one sorted in ascending order and the other in descending order.
Understanding the Problem
Consider a list of tuples like myList = [(ele1A, ele2A),(ele1B, ele2B),(ele1C, ele2C)]. Sorting this list with two keys means organizing it based on both the first and second elements of each tuple. We can use the sorted() function to sort the list, passing a custom key function that specifies the sorting criteria:
<code class="python">sortedList = sorted(myList, key = lambda y: (y[0].lower(), y[1]))</code>
This code sorts the list in ascending order for both keys. To sort the first key in descending order, we can use the following code:
<code class="python">sortedList = sorted(myList, key = lambda y: (y[0].lower(), -y[1]))</code>
However, this code sorts both keys in descending order. To sort only the first key in descending order and the second key in ascending order, we can use the following code:
<code class="python">sortedList = sorted(myList, key = lambda y: (-y[0].lower(), y[1]))</code>
This code sorts the tuples by the first key in reverse alphabetical order (descending) and by the second key in alphabetical order (ascending).
Example
Let's apply this sorting method to the given list myList:
<code class="python">myList = [('Ele1A', 'Ele2A'), ('Ele1B', 'Ele2B'), ('Ele1C', 'Ele2C')] sortedList = sorted(myList, key = lambda y: (-y[0].lower(), y[1])) # Print the sorted list print(sortedList)</code>
Output:
[('Ele1C', 'Ele2C'), ('Ele1B', 'Ele2B'), ('Ele1A', 'Ele2A')]
As we can see, the list is sorted by the first key in reverse alphabetical order and by the second key in alphabetical order, satisfying the problem's requirements.
The above is the detailed content of How to Sort a List of Tuples with One Key in Reverse Order?. For more information, please follow other related articles on the PHP Chinese website!