Bird
Raised Fist0
Pythonprogramming~10 mins

Lambda with sorted() in Python - Step-by-Step Execution

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Concept Flow - Lambda with sorted()
Start with list
Call sorted()
Use lambda as key
Apply lambda to each item
Compare results
Return sorted list
The sorted() function takes a list and a lambda function as a key to decide the order, then returns a new sorted list.
Execution Sample
Python
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers, key=lambda x: -x)
print(sorted_numbers)
Sorts the list numbers in descending order using a lambda function as the key.
Execution Table
StepActionLambda Input (x)Lambda Output (-x)ComparisonSorted List State
1Apply lambda to 55-5-[5]
2Apply lambda to 22-2Compare -2 > -5[5, 2]
3Apply lambda to 99-9Compare -9 < -5 and -2[5, 2, 9]
4Apply lambda to 11-1Compare -1 > -2[5, 2, 9, 1]
5Sort by lambda output--Order by ascending lambda output[9, 5, 2, 1]
6Return sorted list---[9, 5, 2, 1]
💡 All items processed and sorted by lambda key, sorted list returned.
Variable Tracker
VariableStartAfter Step 1After Step 2After Step 3After Step 4Final
numbers[5, 2, 9, 1][5, 2, 9, 1][5, 2, 9, 1][5, 2, 9, 1][5, 2, 9, 1][5, 2, 9, 1]
sorted_numbers[][][][][][9, 5, 2, 1]
Key Moments - 2 Insights
Why does the lambda use '-x' instead of just 'x'?
Using '-x' reverses the order because sorted() sorts ascending by default; the lambda output is used to compare items, so negating x sorts descending (see execution_table steps 1-5).
Does sorted() change the original list?
No, sorted() returns a new list and leaves the original list unchanged, as shown in variable_tracker where 'numbers' stays the same.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution_table at Step 3, what is the lambda output for input 9?
A9
B-9
C-5
D5
💡 Hint
Check the 'Lambda Output (-x)' column at Step 3 in execution_table.
At which step does the sorted list first show the item 9 at the front?
AStep 2
BStep 4
CStep 5
DStep 6
💡 Hint
Look at the 'Sorted List State' column in execution_table to see when 9 moves to front.
If the lambda was changed to 'lambda x: x', how would the final sorted list change?
A[1, 2, 5, 9]
B[9, 5, 2, 1]
C[5, 2, 9, 1]
DNo change
💡 Hint
Using 'lambda x: x' sorts ascending, check variable_tracker final sorted_numbers for comparison.
Concept Snapshot
sorted(iterable, key=lambda x: ...)
- sorted() returns a new sorted list
- lambda defines sorting key for each item
- Default sort is ascending
- Use '-x' in lambda to sort descending
- Original list stays unchanged
Full Transcript
This example shows how sorted() uses a lambda function as a key to sort a list. The lambda takes each item and returns its negative, so sorted() sorts the list in descending order. The original list remains unchanged. The execution table traces each step applying the lambda and sorting. The variable tracker shows the original and sorted lists over time.

Practice

(1/5)
1. What does the key argument do when used with sorted() and a lambda function in Python?
easy
A. It reverses the order of the sorted list automatically.
B. It changes the original list to a sorted list in place.
C. It tells sorted() how to compare items by extracting a value from each item.
D. It filters out items that do not match the lambda condition.

Solution

  1. Step 1: Understand the role of key in sorted()

    The key argument takes a function that extracts a value from each item to use for sorting.
  2. Step 2: Understand how lambda works with key

    The lambda function defines this extraction rule inline, telling sorted() what to compare.
  3. Final Answer:

    It tells sorted() how to compare items by extracting a value from each item. -> Option C
  4. Quick Check:

    key=lambda x: value means compare by value [OK]
Hint: Remember: key=lambda extracts sort value from each item [OK]
Common Mistakes:
  • Thinking key changes the original list
  • Confusing key with reverse sorting
  • Assuming lambda filters items
2. Which of the following is the correct syntax to sort a list of tuples data = [(2, 'b'), (1, 'a'), (3, 'c')] by the first element using sorted() and a lambda?
easy
A. sorted(data, key=lambda x: x[0])
B. sorted(data, lambda x: x[0])
C. sorted(data, key=lambda x: x[1])
D. sorted(data, key=x[0])

Solution

  1. Step 1: Identify the correct use of key argument

    The key argument must be named and assigned a function, here a lambda.
  2. Step 2: Check lambda syntax and index

    lambda x: x[0] correctly extracts the first element of each tuple for sorting.
  3. Final Answer:

    sorted(data, key=lambda x: x[0]) -> Option A
  4. Quick Check:

    Correct syntax uses key= and lambda with index [OK]
Hint: Always use key= with lambda for sorting rules [OK]
Common Mistakes:
  • Omitting key= argument name
  • Using wrong tuple index
  • Passing lambda as second positional argument
3. What is the output of this code?
data = ['apple', 'banana', 'cherry']
sorted_list = sorted(data, key=lambda x: len(x))
print(sorted_list)
medium
A. ['apple', 'banana', 'cherry']
B. ['banana', 'cherry', 'apple']
C. ['cherry', 'banana', 'apple']
D. ['apple', 'cherry', 'banana']

Solution

  1. Step 1: Understand sorting by length

    The lambda extracts the length of each string: apple(5), banana(6), cherry(6).
  2. 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).
  3. Final Answer:

    ['apple', 'banana', 'cherry'] -> Option A
  4. Quick Check:

    Sort by len(x) = ['apple', 'banana', 'cherry'] [OK]
Hint: Sort by length with key=lambda x: len(x) [OK]
Common Mistakes:
  • Assuming alphabetical sort instead of length
  • Mixing order of equal length items
  • Forgetting sorted returns new list
4. Find the error in this code snippet:
data = [{'name': 'Alice', 'age': 30}, {'name': 'Bob', 'age': 25}]
sorted_data = sorted(data, key=lambda x: x['age'])
print(sorted_data)
medium
A. The code will raise a KeyError because 'age' is missing.
B. There is no error; the code sorts by age correctly.
C. The lambda function should use double quotes for keys.
D. sorted() cannot sort dictionaries.

Solution

  1. Step 1: Check dictionary keys and lambda syntax

    Each dictionary has the key 'age', and lambda accesses it correctly with single quotes.
  2. Step 2: Confirm sorted() usage on list of dicts

    sorted() can sort list of dictionaries using key function; no error occurs.
  3. Final Answer:

    There is no error; the code sorts by age correctly. -> Option B
  4. Quick Check:

    Access dict keys with quotes; sorted works on list of dicts [OK]
Hint: Dictionaries can be sorted by key with lambda [OK]
Common Mistakes:
  • Thinking single quotes cause error
  • Assuming KeyError without missing keys
  • Believing sorted() can't handle dicts
5. You have a list of tuples representing products and their prices:
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?
hard
A. sorted(products, key=lambda x: x[1] and x[0])
B. sorted(products, key=lambda x: x[1] or x[0])
C. sorted(products, key=lambda x: x[0], x[1])
D. sorted(products, key=lambda x: (x[1], x[0]))

Solution

  1. Step 1: Understand sorting by multiple criteria

    To sort by price then name, use a tuple in key: (price, name).
  2. Step 2: Write lambda returning tuple for sorting

    lambda x: (x[1], x[0]) returns price first, then product name.
  3. Final Answer:

    sorted(products, key=lambda x: (x[1], x[0])) -> Option D
  4. Quick Check:

    Use tuple in key=lambda for multi-level sort [OK]
Hint: Use tuple in lambda key for multi-level sorting [OK]
Common Mistakes:
  • Using logical operators instead of tuple
  • Passing multiple key arguments
  • Reversing order of sort keys