Bird
Raised Fist0
Pythonprogramming~10 mins

Dictionary iteration 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 - Dictionary iteration
Start with dictionary
Pick one key-value pair
Use key and/or value
More pairs?
YesPick next pair
No
End
We start with a dictionary, pick each key-value pair one by one, use them, and repeat until all pairs are processed.
Execution Sample
Python
my_dict = {'a': 1, 'b': 2, 'c': 3}
for key, value in my_dict.items():
    print(key, value)
This code goes through each key and value in the dictionary and prints them.
Execution Table
StepCurrent PairKeyValueActionOutput
1('a', 1)a1Print key and valuea 1
2('b', 2)b2Print key and valueb 2
3('c', 3)c3Print key and valuec 3
4No more pairs--Loop ends-
💡 All key-value pairs have been processed, loop ends.
Variable Tracker
VariableStartAfter 1After 2After 3Final
key-abc-
value-123-
Key Moments - 2 Insights
Why do we use .items() to get both key and value?
Using .items() returns pairs of key and value together, so in each loop step we get both. Without .items(), looping over the dictionary gives only keys (see execution_table rows 1-3).
What happens if the dictionary is empty?
The loop body does not run at all because there are no pairs to pick. The loop ends immediately (like step 4 in execution_table).
Visual Quiz - 3 Questions
Test your understanding
Look at the execution table, what is the value of 'key' at step 2?
Ab
Ba
Cc
D-
💡 Hint
Check the 'key' column in variable_tracker after step 2.
At which step does the loop stop running?
AStep 3
BStep 2
CStep 4
DStep 1
💡 Hint
Look at the exit_note and the last row in execution_table.
If we looped over my_dict without .items(), what would the loop variable hold?
AValues only
BKeys only
CKey-value pairs
DNothing
💡 Hint
Recall the key_moments explanation about .items() and dictionary iteration.
Concept Snapshot
Dictionary iteration:
Use for key, value in dict.items():
  to get each key and its value.
Without .items(), loop gives keys only.
Loop runs once per key-value pair.
Stops when all pairs are done.
Full Transcript
Dictionary iteration means going through each key and value in a dictionary one by one. We use a for loop with .items() to get both key and value together. In each step, the loop picks one pair, lets us use the key and value, then moves to the next. When no pairs remain, the loop ends. If the dictionary is empty, the loop does not run. Without .items(), looping over a dictionary gives only keys, not values. This is important to remember when you want both parts. The example code prints each key and value. The execution table shows each step clearly, with the current pair, key, value, and output. The variable tracker shows how key and value change each step. This helps beginners see exactly what happens inside the loop.

Practice

(1/5)
1. What does the following code do?
for key in my_dict:
easy
A. Iterates over the keys of the dictionary
B. Iterates over the values of the dictionary
C. Iterates over the key-value pairs as tuples
D. Raises a syntax error

Solution

  1. Step 1: Understand the for loop syntax

    The loop uses for key in my_dict, which by default iterates over dictionary keys.
  2. Step 2: Identify what is accessed in each iteration

    Each iteration gives one key from the dictionary, not values or pairs.
  3. Final Answer:

    Iterates over the keys of the dictionary -> Option A
  4. Quick Check:

    for key in dict = keys [OK]
Hint: for key in dict loops over keys only [OK]
Common Mistakes:
  • Thinking it loops over values
  • Confusing keys with key-value pairs
  • Assuming it raises an error
2. Which of the following is the correct syntax to iterate over keys and values in a dictionary my_dict?
easy
A. for key, value in my_dict.keys():
B. for key, value in my_dict:
C. for key in my_dict.values():
D. for key, value in my_dict.items():

Solution

  1. Step 1: Recall dictionary methods for iteration

    To get keys and values, use my_dict.items() which returns key-value pairs.
  2. Step 2: Check syntax correctness

    Only for key, value in my_dict.items(): correctly unpacks keys and values.
  3. Final Answer:

    for key, value in my_dict.items(): -> Option D
  4. Quick Check:

    Use dict.items() for keys and values [OK]
Hint: Use dict.items() to get keys and values together [OK]
Common Mistakes:
  • Using my_dict without .items() for key-value pairs
  • Trying to unpack keys() or values() which return single elements
  • Syntax errors from missing .items()
3. What is the output of this code?
my_dict = {'a': 1, 'b': 2}
for k, v in my_dict.items():
    print(k, v)
medium
A. a 1\nb 2
B. ('a', 1)\n('b', 2)
C. a\nb
D. 1\n2

Solution

  1. Step 1: Understand the loop over items()

    The loop unpacks each key-value pair from my_dict.items().
  2. Step 2: Analyze the print statement

    It prints the key and value separated by space on each line, so output lines are "a 1" and "b 2".
  3. Final Answer:

    a 1\nb 2 -> Option A
  4. Quick Check:

    print(k, v) prints key and value separated by space [OK]
Hint: print(k, v) shows key and value separated by space [OK]
Common Mistakes:
  • Expecting tuples printed instead of separate values
  • Printing only keys or only values
  • Confusing output format with list or tuple
4. Find the error in this code:
my_dict = {'x': 10, 'y': 20}
for key, value in my_dict:
    print(key, value)
medium
A. Dictionary keys cannot be unpacked
B. Incorrect print statement syntax
C. Missing .items() after my_dict
D. No error, code runs fine

Solution

  1. Step 1: Identify the iteration target

    The loop tries to unpack two variables from my_dict directly, which yields only keys.
  2. Step 2: Correct the iteration method

    To unpack key and value, use my_dict.items() instead of just my_dict.
  3. Final Answer:

    Missing .items() after my_dict -> Option C
  4. Quick Check:

    Use my_dict.items() to unpack key, value [OK]
Hint: Use .items() to unpack key and value in loop [OK]
Common Mistakes:
  • Trying to unpack keys only without .items()
  • Assuming dict directly yields key-value pairs
  • Ignoring error message about unpacking
5. Given the dictionary data = {'a': 0, 'b': 2, 'c': 0, 'd': 4}, which code snippet creates a new dictionary with only keys having non-zero values?
hard
A. new_dict = {k: v for k, v in data if v != 0}
B. new_dict = {k: v for k, v in data.items() if v != 0}
C. new_dict = {k: v for k in data.keys() if data[k] != 0}
D. new_dict = {k: v for v, k in data.items() if v != 0}

Solution

  1. Step 1: Understand dictionary comprehension with condition

    We want to keep only items where value is not zero, so use if v != 0 in comprehension.
  2. Step 2: Check correct unpacking and syntax

    new_dict = {k: v for k, v in data.items() if v != 0} correctly unpacks key and value from data.items() and filters by value.
  3. Final Answer:

    new_dict = {k: v for k, v in data.items() if v != 0} -> Option B
  4. Quick Check:

    Use dict.items() and filter with if condition [OK]
Hint: Use dict.items() with if condition in comprehension [OK]
Common Mistakes:
  • Forgetting .items() when unpacking key and value
  • Swapping key and value in unpacking
  • Using keys() without accessing values