Descending Order Sorting in Python

Descending Order Sorting in Python

Descending order sorting arranges elements from highest to lowest. This can be applied to both numeric and alphanumeric lists. Let’s explore how to perform this sorting in Python.

Using .sort() for Descending Order

The .sort() method sorts the elements of a list in place. By default, it sorts in ascending order, but you can specify reverse=True to sort in descending order.

Basic Example

For a list of numbers: 

# List of numbers
numbers = [5, 2, 9, 1, 5, 6]
# In-place sorting in descending order
numbers.sort(reverse=True)
print("Descending order sort with .sort():", numbers)
"""
Output:
Descending order sort with .sort(): [9, 6, 5, 5, 2, 1]
"""

 For a list of strings: 

# List of strings
fruits = ["apple", "banana", "orange", "kiwi"]
# In-place sorting in descending order
fruits.sort(reverse=True)
print("Descending order sort with .sort() (strings):", fruits)
"""
Output:
Descending order sort with .sort() (strings): ['orange', 'kiwi', 'banana', 'apple']
"""

Using sorted() for Descending Order

The sorted() function returns a new list that is sorted in descending order without modifying the original list.

Basic Example

For a list of numbers: 

# List of numbers
numbers = [5, 2, 9, 1, 5, 6]
# Sorting with sorted() in descending order
sorted_numbers = sorted(numbers, reverse=True)
print("Descending order sort with sorted():", sorted_numbers)
print("Original list:", numbers)
"""
Output:
Descending order sort with sorted(): [9, 6, 5, 5, 2, 1]
Original list: [5, 2, 9, 1, 5, 6]
"""

For a list of strings: 

# List of strings
fruits = ["apple", "banana", "orange", "kiwi"]
# Sorting with sorted() in descending order
sorted_fruits = sorted(fruits, reverse=True)
print("Descending order sort with sorted() (strings):", sorted_fruits)
print("Original list:", fruits)
"""
Output:
Descending order sort with sorted() (strings): ['orange', 'kiwi', 'banana', 'apple']
Original list: ['apple', 'banana', 'orange', 'kiwi']
"""

Descending Order with Custom Key Functions

You can also sort in descending order based on a custom key function. This is useful when you want to sort by a specific attribute or derived value.

Example with String Lengths 

# List of strings
words = ["apple", "banana", "cherry", "kiwi"]
# Sorting by length in descending order
words.sort(key=len, reverse=True)
print("Descending order sort by length:", words)
"""
Output:
Descending order sort by length: ['banana', 'cherry', 'apple', 'kiwi']
"""

 Descending Order with Complex Data Structures

For complex data structures like lists of tuples or dictionaries, you can use custom sorting with a key function and set reverse=True.

Example with Tuples 

# List of tuples (name, age)
people = [("Alice", 30), ("Bob", 25), ("Charlie", 35)]
# Sorting by age in descending order
people.sort(key=lambda x: x[1], reverse=True)
print("Descending order sort by age:", people)
"""
Output:
Descending order sort by age: [('Charlie', 35), ('Alice', 30), ('Bob', 25)]
"""

 Case Insensitive Descending Order

When sorting strings, case sensitivity can affect the order. You can handle case insensitivity by converting all strings to the same case in the key function.

Example 

# List of strings with mixed case
strings = ["apple", "Banana", "orange", "Kiwi"]
# Sorting in descending order, case insensitive
sorted_strings = sorted(strings, key=str.lower, reverse=True)
print("Case insensitive descending order sort:", sorted_strings)
"""
Output:
Case insensitive descending order sort: ['orange', 'Kiwi', 'Banana', 'apple']
"""

 Summary

  • Using .sort(): Sorts a list in-place in descending order with the reverse=True argument.
  • Using sorted(): Returns a new list sorted in descending order with the reverse=True argument.
  • Custom Key Functions: Sort by derived values (e.g., string length) in descending order.
  • Complex Data Structures: Apply sorting to lists of tuples or dictionaries using a custom key function and reverse=True.
  • Case Insensitivity: Handle case sensitivity with str.lower in the key function for strings.

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *