Python Program: How to Sort Lists Alphabetically

Soumya Agarwal
By
Soumya Agarwal
I'm a BTech graduate from IIITM Gwalior. I have been actively working with large MNCs like ZS and Amazon. My development skills include Android and Python...
10 Min Read

Sorting lists alphabetically is a common programming task that Python makes simple and efficient. In this tutorial, you will explore various methods to sort lists alphabetically, covering both strings and other data types. Whether you are a beginner or an experienced programmer, this guide will help you learn different sorting techniques in Python.

Problem: Sort Lists Alphabetically in Python

Before we dive into sorting lists alphabetically, let’s review what lists are in Python.

A list is an ordered collection of items. It can contain elements of different data types. Here’s a quick example:

# Example List
fruits = ['apples', 'bananas', 'oranges', 'kiwis']

In this example, ‘apples’, ‘bananas’, ‘oranges’, and ‘kiwis’ are elements of the list.

Simple solutions to sort lists alphabetically

In the below section, we have explained nine different ways to sort lists in Python. Please follow them one by one. And, also run the code given in the examples.

Method 1: Using the sorted() function

The simplest way to sort a list alphabetically is by using the built-in sorted() function. This function sorts the current list and provides a new one without modifying the actual. Here’s an example:

# Sorting list alphabetically using sorted()
sorted_fruits = sorted(fruits)

# Displaying the sorted list
print(sorted_fruits)

In this example, sorted_fruits will contain the elements of the base list sorted alphabetically. This method works for both strings and other comparable data types.

Method 2: Using the sort() method

If you want to sort the list in place, you can use the sort() method of the list. This method changes the actual list. This approach is more memory-efficient as it doesn’t create a new sorted list. Here’s an example:

# Sorting list alphabetically in-place using sort()
fruits.sort()

# Displaying the sorted list
print(fruits)

In this example, fruits will be sorted alphabetically directly. The sort() method is convenient when you want to modify the base list.

Method 3: Sorting in reverse order

Both sorted() and sort() methods allow you to sort lists in reverse order by using the reverse parameter. Let’s sort the list of fruits in reverse alphabetically:

# Sorting list in reverse alphabetical order using sorted() with reverse
sorted_fruits_reverse = sorted(fruits, reverse=True)

# Displaying the sorted list in reverse order
print(sorted_fruits_reverse)

This example demonstrates how to sort the list in reverse alphabetical order using the reverse parameter with the sorted() function.

Method 4: Using the key option with sorted()

In sorted() function, you can change the sorting criteria by using the key option. This is useful for sorting based on a specific property or condition. Let’s take a list of mixed-case strings and sort it in a case-insensitive manner:

# Sorting list of mixed-case strings case-insensitively using sorted() with key
mixed_case_fruits = ['Apple', 'banana', 'Orange', 'Kiwi']
sorted_mixed_case = sorted(mixed_case_fruits, key=lambda x: x.lower())

# Displaying the case-insensitive sorted list
print(sorted_mixed_case)

Here, the lambda function lambda x: x.lower() is used as the key to convert all strings to lowercase before sorting, ensuring case-insensitive sorting.

Method 5: Using the key option with sort()

Similarly, you can use the key option with the sort() method. Let’s sort a list of strings based on their lengths:

# Sorting list of strings based on length using sort() with key
sorted_fruits_length = sorted(fruits, key=len)

# Displaying the sorted list based on length
print(sorted_fruits_length)

In this example, the key=len specifies that the sorting should be based on the length of each string in the list.

Method 6: Using locale for Language-Specific Sorting

Python provides the locale module, which can be used for language-specific sorting. This is particularly relevant when dealing with strings in different languages. Here’s an example of sorting a list of strings using the German locale:

import locale

# Setting the locale to German
locale.setlocale(locale.LC_COLLATE, 'de_DE')

# Sorting list using German locale
sorted_fruits_german = sorted(fruits, key=locale.strxfrm)

# Displaying the list sorted with German locale
print(sorted_fruits_german)

In this example, locale.strxfrm is used as the key function to perform language-specific sorting based on the German locale.

Method 7: Using functools.cmp_to_key for Custom Sorting

If you need more complex custom sorting logic, you can use functools.cmp_to_key to convert an old-style comparison function to a key function. Here’s an example of sorting a list of numbers based on the sum of their digits:

import functools

# Custom comparison function for sorting by sum of digits
def compare_by_sum(x, y):
    return sum(map(int, str(x))) - sum(map(int, str(y)))

# Sorting list based on sum of digits using cmp_to_key
sorted_numbers_by_sum = sorted(fruits, key=functools.cmp_to_key(compare_by_sum))

# Displaying the list sorted by sum of digits
print(sorted_numbers_by_sum)

In this example, compare_by_sum is a custom comparison function that calculates the sum of digits for each number. The cmp_to_key function is then used to convert it into a key function for sorting.

Method 8: Using NumPy for Numeric Sorting

If your list contains numeric data, the numpy library can be handy for specialized sorting. Let’s sort a list of numbers in ascending order using numpy:

import numpy as np

# Sorting list of numbers using numpy
sorted_numbers_numpy = np.sort(np.array(fruits))

# Displaying the sorted list

 of numbers
print(sorted_numbers_numpy)

Here, numpy is used to convert the list into a NumPy array, which is then sorted using the np.sort() function.

Method 9: Using heapq for Heap-based Sorting

The heapq module in Python provides an implementation of the heap queue algorithm, which can be useful for heap-based sorting. Here’s an example of sorting a list of numbers using heapq:

import heapq

# Sorting list of numbers using heapq
heapq.heapify(fruits)
sorted_numbers_heapq = [heapq.heappop(fruits) for _ in range(len(fruits))]

# Displaying the sorted list using heapq
print(sorted_numbers_heapq)

In this example, heapq.heapify is used to convert the list into a heap, and heapq.heappop is used to extract the smallest element in each iteration, effectively sorting the list.

Frequently asked questions

Q1: Can I sort a list of numbers alphabetically using these methods?

Answer: Yes, these methods apply to lists of numbers as well. The sorting is based on the natural order of elements, so numbers will be sorted numerically.

Q2: How can I sort a list of strings in reverse alphabetical order?

Answer: You can achieve reverse alphabetical sorting by using the reverse parameter with the sorted() function or the sort() method. Here’s an example:

# Sorting list in reverse alphabetical order using sorted() with reverse
sorted_fruits_reverse_alpha = sorted(fruits, reverse=True)

# Displaying the sorted list in reverse alphabetical order
print(sorted_fruits_reverse_alpha)

Q3: Is there a way to sort a list of custom objects alphabetically based on a specific attribute?

Answer: Yes, you can use the key option with the sorted() or the sort() method to specify a custom sorting criterion. Here’s an example:

# Sorting list of custom objects based on a specific attribute
class Person:
    def __init__(self, name, age):
        self.name = name
        self.age = age

people = [Person('Alice', 25), Person('Bob', 30), Person('Charlie', 22)]
sorted_people_by_name = sorted(people, key=lambda x: x.name)

# Displaying the sorted list of custom objects
for person in sorted_people_by_name:
    print(person.name, person.age)

Feel free to adapt these methods to your specific use cases and explore different scenarios in your programming journey.

Must Read:
1. Python Nested Lists
2. Python Add Lists
3. Python Add List Elements
4. Python Sort List of Lists
5. Python Sort List of Strings
6. Python Sort a Dictionary
7. Python Find List Shape
8. Python Compare Two Lists
9. Python Sets vs. Lists
10. Python Map() vs List Comprehension
11. Python Generators vs. List Comprehensions
12. Python Sort List in Descending Order
13. Python Sort List of Numbers or Integers

Congratulations! You’ve now explored multiple methods to sort lists alphabetically in Python. Whether you are working with strings, numbers, or more complex data types, you can use them in your programs for efficient sorting.

Before you leave, render your support for us to continue. If you like our tutorials, share this post on social media like Facebook/Twitter.

Happy Coding,
Team TechBeamers

Share This Article
Leave a Comment
Subscribe
Notify of
guest

0 Comments
Newest
Oldest
Inline Feedbacks
View all comments