Discover how a tiny anonymous function can turn messy sorting into a breeze!
Why Lambda with sorted() in Python? - Purpose & Use Cases
Start learning this pattern below
Jump into concepts and practice - no test required
Imagine you have a messy list of names and ages, and you want to sort them by age. Doing this by hand means writing lots of code to compare each item, which is like sorting a messy pile of papers one by one.
Sorting manually is slow and easy to mess up. You might forget to compare the right part, or your code becomes long and confusing. It's like trying to organize a big stack of papers without any system.
Using lambda with sorted() lets you quickly tell Python how to sort your list by any detail you want. It's like giving clear instructions to a helper who sorts the papers perfectly and fast.
def by_age(person): return person[1] sorted_list = sorted(people, key=by_age)
sorted_list = sorted(people, key=lambda person: person[1])
This lets you sort complex lists easily by any rule, making your code shorter, clearer, and faster to write.
Sorting a list of students by their test scores to quickly find the top performers without writing extra functions.
Manual sorting is slow and error-prone.
lambda with sorted() makes sorting by any detail simple.
It saves time and keeps code clean and easy to read.
Practice
key argument do when used with sorted() and a lambda function in Python?Solution
Step 1: Understand the role of
Thekeyinsorted()keyargument takes a function that extracts a value from each item to use for sorting.Step 2: Understand how
Thelambdaworks withkeylambdafunction defines this extraction rule inline, tellingsorted()what to compare.Final Answer:
It tellssorted()how to compare items by extracting a value from each item. -> Option CQuick Check:
key=lambda x: valuemeans compare by value [OK]
- Thinking key changes the original list
- Confusing key with reverse sorting
- Assuming lambda filters items
data = [(2, 'b'), (1, 'a'), (3, 'c')] by the first element using sorted() and a lambda?Solution
Step 1: Identify the correct use of
Thekeyargumentkeyargument must be named and assigned a function, here a lambda.Step 2: Check lambda syntax and index
lambda x: x[0]correctly extracts the first element of each tuple for sorting.Final Answer:
sorted(data, key=lambda x: x[0]) -> Option AQuick Check:
Correct syntax uses key= and lambda with index [OK]
- Omitting key= argument name
- Using wrong tuple index
- Passing lambda as second positional argument
data = ['apple', 'banana', 'cherry'] sorted_list = sorted(data, key=lambda x: len(x)) print(sorted_list)
Solution
Step 1: Understand sorting by length
The lambda extracts the length of each string: apple(5), banana(6), cherry(6).Step 2: Sort strings by their length
Sorted order by length is: apple(5), banana(6), cherry(6). Since banana and cherry have same length, original order among them is preserved (banana before cherry).Final Answer:
['apple', 'banana', 'cherry'] -> Option AQuick Check:
Sort by len(x) = ['apple', 'banana', 'cherry'] [OK]
- Assuming alphabetical sort instead of length
- Mixing order of equal length items
- Forgetting sorted returns new list
data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)Solution
Step 1: Check dictionary keys and lambda syntax
Each dictionary has the key 'age', and lambda accesses it correctly with single quotes.Step 2: Confirm sorted() usage on list of dicts
sorted() can sort list of dictionaries using key function; no error occurs.Final Answer:
There is no error; the code sorts by age correctly. -> Option BQuick Check:
Access dict keys with quotes; sorted works on list of dicts [OK]
- Thinking single quotes cause error
- Assuming KeyError without missing keys
- Believing sorted() can't handle dicts
products = [('pen', 1.5), ('notebook', 2.0), ('eraser', 0.5), ('pencil', 1.5)]How would you sort this list first by price ascending, then by product name alphabetically using sorted() and lambda?Solution
Step 1: Understand sorting by multiple criteria
To sort by price then name, use a tuple in key: (price, name).Step 2: Write lambda returning tuple for sorting
lambda x: (x[1], x[0])returns price first, then product name.Final Answer:
sorted(products, key=lambda x: (x[1], x[0])) -> Option DQuick Check:
Use tuple in key=lambda for multi-level sort [OK]
- Using logical operators instead of tuple
- Passing multiple key arguments
- Reversing order of sort keys
