Sorting Using Functions
Let’s explore sorting using functions in Python 🏅🔢—with easy explanations, step-by-step examples, and practice questions (with solutions)! 🚦
Why Sort? 🤔
Sorting helps you organize data—like arranging numbers from smallest to largest, or names alphabetically. Python has built-in ways to sort, but you can also write your own functions for custom sorting!
1️⃣ Basic Sorting with Built-in Functions
Using sorted() and .sort()
sorted(sequence)returns a new sorted list from any sequence (list, tuple, etc.)..sort()sorts a list in place (modifies the original list).
numbers = [4, 2, 7, 1]
print(sorted(numbers)) # [1, 2, 4, 7]
numbers.sort()
print(numbers) # [1, 2, 4, 7]You can use sorted() with any sequence, but .sort() is only for lists!1
2️⃣ Sorting with Functions ✨
You can write your own sorting function for special needs!
Example: Selection Sort (Custom Function)
def selection_sort(lst):
result = []
while len(lst) > 0:
min_val = min(lst)
result.append(min_val)
lst.remove(min_val)
return result
numbers = [24, 6, 32, 78, 24, 84]
print(selection_sort(numbers)) # [6, 24, 24, 32, 78, 84]This function finds the smallest item, adds it to a new list, and removes it from the original—repeating until sorted.2
3️⃣ Sorting Dictionaries by Key or Value
Dictionaries are unordered, but you can sort them for display!
Sort by Key
d = {'b': 1, 'a': 10, 'c': 22}
for key in sorted(d):
print(key, d[key])
# Output:
# a 10
# b 1
# c 22This loops through keys in sorted order.31
Sort by Value
d = {'a': 10, 'b': 1, 'c': 22}
lst = []
for key, val in d.items():
lst.append((val, key)) # (value, key) tuples
lst.sort(reverse=True)
for val, key in lst:
print(key, val)
# Output:
# c 22
# a 10
# b 1By making (value, key) tuples, you can sort by value easily!1
4️⃣ Sorting with key Functions
The sorted() function can take a key argument—a function that tells Python how to sort.
Example: Sort Words by Length
words = ['apple', 'banana', 'kiwi', 'cherry']
sorted_words = sorted(words, key=len)
print(sorted_words) # ['kiwi', 'apple', 'banana', 'cherry']Here, key=len tells Python to sort by word length.
Example: Sort Tuples by Second Element
pairs = [(1, 'b'), (3, 'a'), (2, 'c')]
sorted_pairs = sorted(pairs, key=lambda x: x[^1])
print(sorted_pairs) # [(3, 'a'), (1, 'b'), (2, 'c')]Lambda functions are great for custom sorting!1
5️⃣ Practice Questions with Solutions 💡
Q1. Sort a list of numbers in descending order using a function.
def sort_desc(lst):
return sorted(lst, reverse=True)
nums = [3, 1, 4, 2]
print(sort_desc(nums)) # [4, 3, 2, 1]Q2. Given a dictionary of students and marks, print names sorted by marks (highest first).
students = {'Anil': 85, 'Bina': 78, 'Chetan': 92, 'Deepa': 67}
lst = []
for name, marks in students.items():
lst.append((marks, name))
lst.sort(reverse=True)
for marks, name in lst:
print(name, marks)
# Output:
# Chetan 92
# Anil 85
# Bina 78
# Deepa 67This uses the decorate-sort-undecorate (DSU) pattern!1
Q3. Sort a list of words by their last letter using a function.
def sort_by_last_letter(words):
return sorted(words, key=lambda word: word[-1])
words = ['apple', 'banana', 'kiwi', 'cherry']
print(sort_by_last_letter(words)) # ['banana', 'apple', 'cherry', 'kiwi']6️⃣ Step-by-Step: Sorting Dictionary by Value
Goal: Print dictionary items sorted by value (highest to lowest).
Step 1: Make a list of (value, key) tuples Step 2: Sort the list in reverse order Step 3: Print key and value
d = {'a': 10, 'b': 1, 'c': 22}
lst = []
for key, val in d.items():
lst.append((val, key))
lst.sort(reverse=True)
for val, key in lst:
print(key, val)
# Output: c 22, a 10, b 1🧩 Try It Yourself!
Q: Write a function to sort a list of tuples by the second element.
Solution
def sort_by_second(tuples):
return sorted(tuples, key=lambda x: x[^1])
pairs = [(5, 2), (1, 3), (4, 1)]
print(sort_by_second(pairs)) # [(4, 1), (5, 2), (1, 3)]⭐ Key Takeaways
- Use
sorted()for any sequence,.sort()for lists. - For custom sorting, use the
keyargument with a function or lambda. - To sort dictionaries, convert items to a list of tuples, then sort.
- Writing your own sorting function helps you learn how sorting works!
Keep practicing and try sorting different types of data—it’s a super useful skill! 🥇🧑💻