Bird
Raised Fist0
Pythonprogramming~15 mins

Lambda with sorted() in Python - Mini Project: Build & Apply

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
Sorting a List of Dictionaries Using Lambda with sorted()
๐Ÿ“– Scenario: You work in a small bookstore. You have a list of books, each with a title and a price. You want to organize the books by their price from lowest to highest so customers can easily see the cheapest books first.
๐ŸŽฏ Goal: Build a Python program that sorts a list of dictionaries representing books by their price using sorted() with a lambda function.
๐Ÿ“‹ What You'll Learn
Create a list called books with dictionaries containing 'title' and 'price' keys
Create a variable called sorted_books that sorts books by the 'price' key using sorted() and a lambda
Print the sorted_books list
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
Sorting lists of dictionaries is common when working with data like products, books, or records where you want to order items by a specific detail.
๐Ÿ’ผ Career
Many jobs require sorting data efficiently. Using lambda with sorted() is a quick way to organize data without writing complex code.
Progress0 / 4 steps
1
Create the list of books
Create a list called books with these exact dictionaries: {'title': 'Book A', 'price': 12.99}, {'title': 'Book B', 'price': 8.99}, and {'title': 'Book C', 'price': 15.50}.
Python
Hint

Use square brackets [] to create a list and curly braces {} for each dictionary.

2
Prepare to sort the books
Create a variable called sorted_books and set it to None for now. This will hold the sorted list later.
Python
Hint

Just write sorted_books = None for now.

3
Sort the books by price using lambda with sorted()
Use sorted() with a lambda function to sort the books list by the 'price' key. Assign the result to sorted_books. Use lambda book: book['price'] as the key function.
Python
Hint

Use sorted(books, key=lambda book: book['price']) to sort by price.

4
Print the sorted list of books
Print the sorted_books list to show the books sorted by price.
Python
Hint

Use print(sorted_books) to show the sorted list.

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