Bird
Raised Fist0
Pythonprogramming~10 mins

Lambda with sorted() in Python - Interactive Code Practice

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
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to sort the list of numbers in ascending order using sorted() with a lambda that returns the number itself.

Python
numbers = [5, 2, 9, 1]
sorted_numbers = sorted(numbers, key=lambda x: [1])
print(sorted_numbers)
Drag options to blanks, or click blank then click option'
Alen(x)
Bx
Cx*2
Dx+1
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using len(x) causes an error because numbers are integers, not sequences.
Using x*2 or x+1 changes the sorting order incorrectly.
2fill in blank
medium

Complete the code to sort the list of words by their length using sorted() and a lambda.

Python
words = ['apple', 'fig', 'banana', 'kiwi']
sorted_words = sorted(words, key=lambda w: [1])
print(sorted_words)
Drag options to blanks, or click blank then click option'
Aw[0]
Bw.upper()
Clen(w)
Dw[::-1]
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using w[0] sorts by first letter, not length.
Using w.upper() sorts alphabetically ignoring case.
Using w[::-1] sorts by reversed word, not length.
3fill in blank
hard

Fix the error in the code to sort a list of tuples by the second element using sorted() and a lambda.

Python
pairs = [(1, 3), (2, 1), (3, 2)]
sorted_pairs = sorted(pairs, key=lambda x: [1])
print(sorted_pairs)
Drag options to blanks, or click blank then click option'
Ax[1]
Bx[0]
Cx[2]
Dx
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using x[0] sorts by the first element, not the second.
Using x[2] causes an IndexError because tuples have only two elements.
Using x sorts by the whole tuple, which sorts by first element then second.
4fill in blank
hard

Fill both blanks to create a dictionary of words and their lengths, but only include words longer than 3 characters.

Python
words = ['cat', 'elephant', 'dog', 'lion']
lengths = {word: [1] for word in words if [2]
print(lengths)
Drag options to blanks, or click blank then click option'
Alen(word)
Bword > 3
Clen(word) > 3
Dword
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using word > 3 compares a string to a number, causing an error.
Using word alone in the condition includes all words.
Using len(word) without a comparison includes all words.
5fill in blank
hard

Fill all three blanks to create a dictionary with uppercase words as keys and their lengths as values, including only words with length greater than 4.

Python
words = ['tree', 'mountain', 'river', 'sky']
result = [1]: [2] for w in words if [3]
print(result)
Drag options to blanks, or click blank then click option'
Aw.upper()
Blen(w)
Clen(w) > 4
Dw.lower()
Attempts:
3 left
๐Ÿ’ก Hint
Common Mistakes
Using w.lower() for keys instead of uppercase.
Not filtering words by length.
Using w instead of w.upper() for keys.

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