Bird
Raised Fist0
Pythonprogramming~15 mins

Dictionary comprehension with condition 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
Dictionary Comprehension with Condition
๐Ÿ“– Scenario: You are managing a small bookstore's inventory. You have a list of books with their prices. You want to create a new dictionary that only includes books priced below a certain amount to plan a discount sale.
๐ŸŽฏ Goal: Build a dictionary comprehension with a condition to filter books priced below a set threshold.
๐Ÿ“‹ What You'll Learn
Create a dictionary called books with given book titles and prices.
Create a variable called max_price to set the price limit.
Use a dictionary comprehension with a condition to create a new dictionary called discount_books with books priced less than max_price.
Print the discount_books dictionary.
๐Ÿ’ก Why This Matters
๐ŸŒ Real World
Filtering products or items based on price or other conditions is common in online stores and inventory management.
๐Ÿ’ผ Career
Knowing how to filter dictionaries efficiently helps in data processing, reporting, and building features like price filters in apps.
Progress0 / 4 steps
1
Create the books dictionary
Create a dictionary called books with these exact entries: 'Python Basics': 45, 'Data Science 101': 60, 'Machine Learning': 55, 'Deep Learning': 70, 'AI for Beginners': 40.
Python
Hint

Use curly braces {} to create a dictionary with keys as book titles and values as prices.

2
Set the maximum price
Create a variable called max_price and set it to 50.
Python
Hint

Just assign the number 50 to the variable max_price.

3
Create filtered dictionary with comprehension
Use a dictionary comprehension to create a new dictionary called discount_books that includes only the books from books with prices less than max_price. Use for title, price in books.items() in your comprehension.
Python
Hint

Use the format {key: value for key, value in dictionary.items() if condition} to filter.

4
Print the filtered dictionary
Print the discount_books dictionary using print(discount_books).
Python
Hint

Use the print function to show the dictionary on the screen.

Practice

(1/5)
1.

What does the following dictionary comprehension do?
{k: v for k, v in {'a': 1, 'b': 2, 'c': 3}.items() if v > 1}

easy
A. {'a': 1, 'b': 2, 'c': 3} - keeps all items
B. {'a': 1} - keeps items with values equal to 1
C. {'b': 2, 'c': 3} - keeps items with values greater than 1
D. {} - removes all items

Solution

  1. Step 1: Understand the dictionary comprehension structure

    The comprehension loops over each key-value pair in the original dictionary.
  2. Step 2: Apply the condition if v > 1

    Only pairs where the value is greater than 1 are included in the new dictionary.
  3. Final Answer:

    {'b': 2, 'c': 3} - keeps items with values greater than 1 -> Option C
  4. Quick Check:

    Filter values > 1 = {'b': 2, 'c': 3} [OK]
Hint: Look for the condition after the for loop to filter items [OK]
Common Mistakes:
  • Ignoring the condition and including all items
  • Confusing keys and values in the condition
  • Using wrong comparison operator
2.

Which of the following is the correct syntax for a dictionary comprehension with a condition?

?
easy
A. {k: v for k, v in d.items() if v % 2 == 0}
B. {k: v if v % 2 == 0 for k, v in d.items()}
C. {k: v for k, v in d.items() where v % 2 == 0}
D. {k: v for k, v in d.items() when v % 2 == 0}

Solution

  1. Step 1: Recall dictionary comprehension syntax

    The correct syntax is {key: value for key, value in iterable if condition}.
  2. Step 2: Identify the correct option

    {k: v for k, v in d.items() if v % 2 == 0} matches the correct syntax with if after the loop. Others use invalid keywords or wrong order.
  3. Final Answer:

    {k: v for k, v in d.items() if v % 2 == 0} -> Option A
  4. Quick Check:

    Correct syntax uses 'if' after for loop [OK]
Hint: Remember: condition goes after the for clause in comprehension [OK]
Common Mistakes:
  • Placing 'if' before the for loop
  • Using 'where' or 'when' instead of 'if'
  • Incorrect order of clauses
3.

What is the output of this code?

nums = {'x': 10, 'y': 5, 'z': 0}
filtered = {k: v for k, v in nums.items() if v}
print(filtered)

medium
A. {'x': 10, 'y': 5}
B. {}
C. {'z': 0}
D. {'x': 10, 'y': 5, 'z': 0}

Solution

  1. Step 1: Understand the condition if v

    This condition filters out values that are 'falsy' in Python, like 0, None, or empty.
  2. Step 2: Apply the condition to each item

    Values 10 and 5 are truthy, so included; 0 is falsy, so excluded.
  3. Final Answer:

    {'x': 10, 'y': 5} -> Option A
  4. Quick Check:

    Falsy values excluded = {'x': 10, 'y': 5} [OK]
Hint: Falsy values like 0 are skipped when condition is just 'if v' [OK]
Common Mistakes:
  • Including zero as truthy
  • Confusing keys and values
  • Expecting all items to be included
4.

Find the error in this dictionary comprehension:

data = {'a': 1, 'b': 2, 'c': 3}
result = {k: v for k, v in data.items() if v > 1 else 0}
print(result)

medium
A. No error, outputs {'b': 2, 'c': 3}
B. SyntaxError due to incorrect use of else in comprehension
C. Outputs {'a': 0, 'b': 2, 'c': 3}
D. KeyError because of else clause

Solution

  1. Step 1: Check the use of else in comprehension condition

    Dictionary comprehensions cannot have an else clause directly after the if condition.
  2. Step 2: Identify correct syntax

    To use else, it must be inside a value expression with a ternary operator, not after if.
  3. Final Answer:

    SyntaxError due to incorrect use of else in comprehension -> Option B
  4. Quick Check:

    else must be inside value expression, not after if [OK]
Hint: Use ternary inside value, not else after if in comprehension [OK]
Common Mistakes:
  • Placing else after if in comprehension
  • Confusing ternary operator syntax
  • Expecting else to filter keys
5.

You have a dictionary of student scores:
scores = {'Alice': 85, 'Bob': 42, 'Charlie': 73, 'David': 58}
Use dictionary comprehension with a condition to create a new dictionary passed containing only students who scored 60 or more, but store their scores as 'Pass' instead of the number.
Which code correctly does this?

hard
A. {k: 'Pass' for k, v in scores.items() if v > 60}
B. {k: 'Pass' if v >= 60 else 'Fail' for k, v in scores.items()}
C. {k: v for k, v in scores.items() if v >= 60}
D. {k: 'Pass' for k, v in scores.items() if v >= 60}

Solution

  1. Step 1: Understand the requirement

    We want only students with scores 60 or more, and their values replaced by 'Pass'.
  2. Step 2: Check each option

    {k: 'Pass' for k, v in scores.items() if v >= 60} filters with if v >= 60 and sets value to 'Pass'. {k: 'Pass' if v >= 60 else 'Fail' for k, v in scores.items()} includes all students with ternary but no filtering. {k: v for k, v in scores.items() if v >= 60} keeps original scores. {k: 'Pass' for k, v in scores.items() if v > 60} excludes 60 exactly.
  3. Final Answer:

    {k: 'Pass' for k, v in scores.items() if v >= 60} -> Option D
  4. Quick Check:

    Filter and replace value with 'Pass' = {k: 'Pass' for k, v in scores.items() if v >= 60} [OK]
Hint: Filter with if, set value directly to 'Pass' in comprehension [OK]
Common Mistakes:
  • Using else without filtering
  • Not including scores equal to 60
  • Keeping original scores instead of 'Pass'