Dictionary comprehension helps you create new dictionaries quickly and clearly from existing data.
Basic dictionary comprehension in Python
Start learning this pattern below
Jump into concepts and practice - no test required
or
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Introduction
Syntax
Python
{key_expression: value_expression for item in iterable}The key_expression and value_expression define what each key and value will be.
The iterable can be a list, dictionary, or any collection you want to loop over.
Examples
Python
{x: x * 2 for x in [1, 2, 3]}Python
{word: len(word) for word in ['cat', 'dog', 'bird']}Python
{k: v.upper() for k, v in {'a': 'apple', 'b': 'banana'}.items()}Sample Program
This program creates a dictionary where each fruit name is a key and its length is the value.
Python
fruits = ['apple', 'banana', 'cherry'] lengths = {fruit: len(fruit) for fruit in fruits} print(lengths)
Important Notes
You can add conditions inside dictionary comprehensions to filter items.
Dictionary comprehensions are faster and cleaner than using loops to build dictionaries.
Summary
Dictionary comprehension is a quick way to create dictionaries from collections.
It uses a simple syntax with key and value expressions inside curly braces.
You can transform and filter data easily while creating dictionaries.
Practice
1. What does the following dictionary comprehension do?
{x: x*x for x in range(3)}easy
Solution
Step 1: Understand the loop and key-value pairs
The comprehension loops over numbers 0, 1, 2 and uses each number as the key.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.Final Answer:
Creates a dictionary with numbers 0 to 2 as keys and their squares as values -> Option CQuick 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
Solution
Step 1: Identify correct dictionary comprehension syntax
Dictionary comprehensions use curly braces with key:value pairs and a for loop inside.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.Final Answer:
{x: 2*x for x in range(1, 4)} -> Option BQuick 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
Solution
Step 1: Understand the filtering condition
The comprehension includes only numbers where n % 2 != 0, meaning odd numbers only (1 and 3).Step 2: Calculate squares for filtered numbers
Squares are 1*1=1 and 3*3=9, so dictionary is {1:1, 3:9}.Final Answer:
{1: 1, 3: 9} -> Option AQuick 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
Solution
Step 1: Check syntax for key-value pairs
Dictionary comprehension requires a colon ':' between key and value, but here a comma ',' is used.Step 2: Confirm other parts are correct
Curly braces and range(3) are correct, so the error is the missing colon.Final Answer:
Missing colon between key and value -> Option AQuick 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?
Which code correctly does this?
words = ['cat', 'house', 'dog', 'elephant']
hard
Solution
Step 1: Understand filtering condition syntax
The if condition must come after the for loop to filter words by length correctly.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.Final Answer:
{word: len(word) for word in words if len(word) > 3} -> Option DQuick 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
