Bird
Raised Fist0
Pythonprogramming~10 mins

Basic dictionary comprehension 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 - Basic dictionary comprehension
Start with iterable
Pick each item
Apply expression for key and value
Add key:value to dictionary
Repeat for all items
Return new dictionary
Dictionary comprehension creates a new dictionary by looping over items and applying expressions for keys and values.
Execution Sample
Python
numbers = [1, 2, 3]
squares = {x: x*x for x in numbers}
print(squares)
Creates a dictionary where keys are numbers and values are their squares.
Execution Table
Stepx (current item)Expression for keyExpression for valueDictionary state
1111{1: 1}
2224{1: 1, 2: 4}
3339{1: 1, 2: 4, 3: 9}
End---All items processed, dictionary complete
💡 All items in the list processed, comprehension ends.
Variable Tracker
VariableStartAfter 1After 2After 3Final
x-123-
squares{}{1: 1}{1: 1, 2: 4}{1: 1, 2: 4, 3: 9}{1: 1, 2: 4, 3: 9}
Key Moments - 2 Insights
Why does the dictionary update after each step instead of creating a list?
Because dictionary comprehension uses curly braces { } and key:value pairs, it builds a dictionary step-by-step as shown in the execution_table rows.
What happens if the key expression repeats the same value?
The dictionary will overwrite the previous value for that key, so only the last value for that key remains, as dictionaries cannot have duplicate keys.
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the dictionary state after step 2?
A{1: 1, 2: 4}
B{2: 4}
C{1: 1, 3: 9}
D{}
💡 Hint
Check the 'Dictionary state' column at step 2 in the execution_table.
At which step does the variable x have the value 3?
AStep 1
BStep 2
CStep 3
DEnd
💡 Hint
Look at the 'x (current item)' column in the execution_table.
If the list numbers was empty, what would the final dictionary be?
A{None: None}
B{}
CError
D{0: 0}
💡 Hint
An empty iterable means no items to process, so the dictionary stays empty.
Concept Snapshot
Dictionary comprehension syntax:
{key_expression: value_expression for item in iterable}
Creates a new dictionary by looping over iterable.
Each item produces one key:value pair.
Keys must be unique; later duplicates overwrite earlier.
Use curly braces { } to create dictionary comprehension.
Full Transcript
This visual execution shows how basic dictionary comprehension works in Python. We start with a list of numbers. For each number x, we create a key:value pair where the key is x and the value is x squared. Step by step, the dictionary grows by adding these pairs. After processing all items, the final dictionary contains each number and its square. The variable tracker shows how x changes each step and how the dictionary builds up. Key moments clarify why the dictionary updates each step and what happens with duplicate keys. The quiz tests understanding of dictionary state at different steps and behavior with empty input.

Practice

(1/5)
1. What does the following dictionary comprehension do?
{x: x*x for x in range(3)}
easy
A. Creates a list of squares from 0 to 2
B. Creates a set of squares from 0 to 2
C. Creates a dictionary with numbers 0 to 2 as keys and their squares as values
D. Creates a dictionary with keys as squares and values as numbers

Solution

  1. Step 1: Understand the loop and key-value pairs

    The comprehension loops over numbers 0, 1, 2 and uses each number as the key.
  2. Step 2: Calculate the value for each key

    Each value is the square of the key (x*x), so values are 0, 1, 4 respectively.
  3. Final Answer:

    Creates a dictionary with numbers 0 to 2 as keys and their squares as values -> Option C
  4. Quick Check:

    Dictionary comprehension = key: x, value: x*x [OK]
Hint: Look for key:value pairs inside braces with a for loop [OK]
Common Mistakes:
  • Confusing dictionary with list or set comprehension
  • Mixing keys and values in comprehension
  • Thinking it creates a list instead of a dictionary
2. Which of the following is the correct syntax for a dictionary comprehension that creates keys from 1 to 3 and values as their double?
easy
A. [x: 2*x for x in range(1, 4)]
B. {x: 2*x for x in range(1, 4)}
C. {x => 2*x for x in range(1, 4)}
D. (x: 2*x for x in range(1, 4))

Solution

  1. Step 1: Identify correct dictionary comprehension syntax

    Dictionary comprehensions use curly braces with key:value pairs and a for loop inside.
  2. Step 2: Check each option

    {x: 2*x for x in range(1, 4)} uses curly braces and colon correctly. Options B, C, D use wrong brackets or arrow syntax.
  3. Final Answer:

    {x: 2*x for x in range(1, 4)} -> Option B
  4. Quick Check:

    Curly braces + key:value + for loop = correct syntax [OK]
Hint: Remember dictionary comprehension uses curly braces and colon [OK]
Common Mistakes:
  • Using square brackets instead of curly braces
  • Using arrow (=>) instead of colon for key-value
  • Using parentheses which create generator expressions
3. What is the output of this code?
nums = [1, 2, 3]
squares = {n: n**2 for n in nums if n % 2 != 0}
print(squares)
medium
A. {1: 1, 3: 9}
B. {2: 4}
C. {1: 1, 2: 4, 3: 9}
D. {}

Solution

  1. Step 1: Understand the filtering condition

    The comprehension includes only numbers where n % 2 != 0, meaning odd numbers only (1 and 3).
  2. Step 2: Calculate squares for filtered numbers

    Squares are 1*1=1 and 3*3=9, so dictionary is {1:1, 3:9}.
  3. Final Answer:

    {1: 1, 3: 9} -> Option A
  4. Quick Check:

    Filter odd numbers and square them = {1:1, 3:9} [OK]
Hint: Check the if condition filters keys before squaring [OK]
Common Mistakes:
  • Including even numbers by mistake
  • Confusing list comprehension output with dictionary
  • Ignoring the if condition in comprehension
4. Find the error in this dictionary comprehension:
result = {x, x*2 for x in range(3)}
medium
A. Missing colon between key and value
B. Using parentheses instead of curly braces
C. Range function is incorrect
D. No error, code is correct

Solution

  1. Step 1: Check syntax for key-value pairs

    Dictionary comprehension requires a colon ':' between key and value, but here a comma ',' is used.
  2. Step 2: Confirm other parts are correct

    Curly braces and range(3) are correct, so the error is the missing colon.
  3. Final Answer:

    Missing colon between key and value -> Option A
  4. Quick Check:

    Key:value pairs need colon, not comma [OK]
Hint: Use colon ':' to separate key and value in dict comprehension [OK]
Common Mistakes:
  • Using comma instead of colon between key and value
  • Confusing set comprehension with dictionary comprehension
  • Using wrong brackets for comprehension
5. Given a list of words, create a dictionary comprehension that maps each word to its length but only include words longer than 3 letters.
Which code correctly does this?
words = ['cat', 'house', 'dog', 'elephant']
hard
A. {word: len(word) for word in words where len(word) > 3}
B. {word: len(word) for word in words if word > 3}
C. {word: len(word) if len(word) > 3 for word in words}
D. {word: len(word) for word in words if len(word) > 3}

Solution

  1. Step 1: Understand filtering condition syntax

    The if condition must come after the for loop to filter words by length correctly.
  2. Step 2: Check each option's syntax

    {word: len(word) for word in words if len(word) > 3} correctly places 'if len(word) > 3' after the for loop. Others have syntax errors or wrong condition placement.
  3. Final Answer:

    {word: len(word) for word in words if len(word) > 3} -> Option D
  4. Quick Check:

    Filter after for loop with if condition [OK]
Hint: Put if condition after for loop in dictionary comprehension [OK]
Common Mistakes:
  • Placing if condition before for loop
  • Using invalid syntax like 'where' instead of 'if'
  • Comparing word string directly to number