Back to Data Structures & Algorithms
2026-04-116 min read

sort() (Data Structures & Algorithms)

Learn sort() (Data Structures & Algorithms) step by step with clear examples and exercises.

Why This Matters

Sorting data is a fundamental operation in programming that plays a crucial role in organizing information and making it easier to search, analyze, and compare. In this lesson, we'll delve into the sort() method for Python lists, providing practical examples, common mistakes, and interview-ready one-liners.

The Importance of Sorting Data

Sorting data is essential in programming as it helps solve real-world problems more efficiently. Some examples include:

  1. Organizing data for analysis: Sorting data can help identify trends, outliers, and patterns that might otherwise be difficult to detect.
  2. Creating efficient algorithms: Sorting data can significantly improve the performance of many algorithms by reducing the number of comparisons required.
  3. Debugging complex code: Sorting data can help in debugging by making it easier to identify issues such as duplicates, inconsistencies, and missing values.

Prerequisites

To fully grasp the concepts covered in this lesson, it is essential that you have a good understanding of the following:

  1. Basic Python syntax and control structures (if-else statements, loops)
  2. Python lists and their basic operations (indexing, slicing, appending, etc.)
  3. Understanding of functions and function definitions in Python

Core Concept

The sort() function in Python is a built-in method for sorting the elements of a list in ascending order by default. It can be applied to any list, and it modifies the original list in place.

Here's an example:

numbers = [7, 3, 11, 2, 5]
numbers.sort()
print(numbers) # Output: [2, 3, 5, 7, 11]

In addition to sorting in ascending order, the sort() function also allows you to sort a list in descending order by setting the reverse parameter to True. Here's an example:

numbers = [7, 3, 11, 2, 5]
numbers.sort(reverse=True)
print(numbers) # Output: [11, 7, 5, 3, 2]

You can also sort a list of custom objects using a comparison function defined by the key parameter. This allows you to sort based on specific attributes or properties of each object. Here's an example:

students = [
{'name': 'Alice', 'age': 20},
{'name': 'Bob', 'age': 18},
{'name': 'Charlie', 'age': 22}
]

def compare_by_age(student):
return student['age']

students.sort(key=compare_by_age)
print(students) # Output: [{'name': 'Bob', 'age': 18}, {'name': 'Alice', 'age': 20}, {'name': 'Charlie', 'age': 22}]

Custom Sorting with key and reverse

The key parameter allows you to pass a function that will be used to extract the sort key from each element in the list. This is useful when sorting custom objects or lists of tuples, as shown below:

List of custom objects with name and score attributes

students = [

{'name': 'Alice', 'score': 85},

{'name': 'Bob', 'score': 92},

{'name': 'Charlie', 'score': 78}

]

Function to extract the score from each student object

def get_score(student):

return student['score']

Sort students based on their scores in descending order

students.sort(key=get_score, reverse=True)

print(students) # Output: [{'name': 'Bob', 'score': 92}, {'name': 'Charlie', 'score': 78}, {'name': 'Alice', 'score': 85}]

Worked Example

Let's consider a real-world scenario where you need to sort a list of student grades in descending order based on their average scores.

students = [
{'name': 'Alice', 'scores': [85, 90, 75]},
{'name': 'Bob', 'scores': [92, 88, 86]},
{'name': 'Charlie', 'scores': [78, 84, 95]}
]

def average_score(student):
return sum(student['scores']) / len(student['scores'])

Sort students in descending order based on their average scores

students.sort(key=average_score, reverse=True)

for student in students:

print(f"{student['name']}: {round(average_score(student), 2)}")


Output:

Charlie: 89.33

Bob: 88.67

Alice: 81.67

Common Mistakes

  1. Forgetting to call the sort() function: Remember that the sort() function modifies the original list in place, so you need to call it explicitly on your list.
  2. Not understanding how the key parameter works: The key parameter is used to specify a comparison function for sorting custom objects. Make sure you understand how to define and use this function correctly.
  3. Sorting lists of strings in lexicographical order: By default, when sorting a list of strings, the sort() function sorts them based on their Unicode values (lexicographical order). If you want to sort them case-insensitively or alphabetically, consider using the str.lower() method before applying the sort() function.
  4. Using sorted() instead of sort(): The sorted() function returns a sorted copy of the list, while sort() modifies the original list in place. Use sort() when you want to sort the original list and sorted() when you need to create a new sorted list without modifying the original one.
  5. Not considering edge cases: When writing custom comparison functions, make sure you consider edge cases such as empty lists or lists with only one element. These cases can cause unexpected behavior if not handled correctly.

Common Mistakes - Edge Cases

  1. Empty Lists: When sorting an empty list, the sort() function does nothing and returns None. To handle this case, you can check whether the list is empty before calling the sort() function.
  2. Lists with only one element: When sorting a list with only one element, the sort() function still performs a comparison (although it doesn't actually sort anything). To avoid unnecessary comparisons and improve performance, you can check whether the list has more than one element before calling the sort() function.

Practice Questions

  1. Write a Python program that sorts a list of integers in ascending order and finds the median value (the middle number when the list has an odd length, or the average of the two middle numbers when the list has an even length).
  1. Given a list of dictionaries representing students with their names and scores, write a Python program that sorts the students based on their total scores in descending order and prints their names along with their total scores.
  1. Write a Python program that sorts a list of tuples containing student names and their ages in ascending order by age, and then sorts them alphabetically by name within each age group.
  1. Write a Python program that sorts a list of custom objects representing employees with their names, salaries, and departments. Sort the employees based on their salaries in descending order, and then sort them alphabetically by name within each department.

FAQ

  1. Why does my sort function not work as expected?
  • Make sure you're using the correct syntax for the sort() function and that your comparison function is defined correctly if you're using the key parameter. Also, consider edge cases such as empty lists or lists with only one element.
  1. How can I sort a list of custom objects in Python?
  • You can use the key parameter with the sort() function to specify a comparison function for sorting custom objects based on their attributes or properties. Make sure you handle edge cases such as empty lists or lists with only one element.
  1. What happens when I call the sort() function on a string in Python?
  • By default, the sort() function sorts strings lexicographically (based on their Unicode values). If you want to sort them case-insensitively or alphabetically, consider using the str.lower() method before applying the sort() function.
  1. Why does my custom comparison function not work as expected?
  • Make sure your comparison function returns a value that can be compared (e.g., a number or a boolean). Also, ensure that your comparison function is consistent and handles edge cases such as empty lists or lists with only one element.
  1. How do I sort a list of tuples in Python?
  • You can use the key parameter with the sort() function to specify a comparison function for sorting tuples based on specific attributes or properties. Make sure you handle edge cases such as empty lists or lists with only one element.
sort() (Data Structures & Algorithms) | Data Structures & Algorithms | XQA Learn