Dictionary iteration in Python - Time & Space Complexity
Start learning this pattern below
Jump into concepts and practice - no test required
When we loop through a dictionary, we want to know how the time it takes changes as the dictionary gets bigger.
We ask: How does the work grow when we look at every item in the dictionary?
Analyze the time complexity of the following code snippet.
my_dict = {"a": 1, "b": 2, "c": 3}
for key, value in my_dict.items():
print(f"Key: {key}, Value: {value}")
This code goes through each key and value in the dictionary and prints them.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Looping over each key-value pair in the dictionary.
- How many times: Once for every item in the dictionary.
As the dictionary gets bigger, the number of times we print grows the same way.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | 10 prints |
| 100 | 100 prints |
| 1000 | 1000 prints |
Pattern observation: The work grows directly with the number of items.
Time Complexity: O(n)
This means if the dictionary doubles in size, the time to loop through it also doubles.
[X] Wrong: "Looping over a dictionary is always constant time because dictionaries are fast."
[OK] Correct: While looking up one item is fast, going through every item takes time proportional to how many items there are.
Understanding how looping through dictionaries grows with size helps you explain your code clearly and shows you know how to think about efficiency.
"What if we only looped through the keys and not the values? How would the time complexity change?"
Practice
for key in my_dict:Solution
Step 1: Understand the for loop syntax
The loop usesfor key in my_dict, which by default iterates over dictionary keys.Step 2: Identify what is accessed in each iteration
Each iteration gives one key from the dictionary, not values or pairs.Final Answer:
Iterates over the keys of the dictionary -> Option AQuick Check:
for key in dict = keys [OK]
- Thinking it loops over values
- Confusing keys with key-value pairs
- Assuming it raises an error
my_dict?Solution
Step 1: Recall dictionary methods for iteration
To get keys and values, usemy_dict.items()which returns key-value pairs.Step 2: Check syntax correctness
Onlyfor key, value in my_dict.items():correctly unpacks keys and values.Final Answer:
for key, value in my_dict.items(): -> Option DQuick Check:
Use dict.items() for keys and values [OK]
- Using my_dict without .items() for key-value pairs
- Trying to unpack keys() or values() which return single elements
- Syntax errors from missing .items()
my_dict = {'a': 1, 'b': 2}
for k, v in my_dict.items():
print(k, v)Solution
Step 1: Understand the loop over items()
The loop unpacks each key-value pair frommy_dict.items().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".Final Answer:
a 1\nb 2 -> Option AQuick Check:
print(k, v) prints key and value separated by space [OK]
- Expecting tuples printed instead of separate values
- Printing only keys or only values
- Confusing output format with list or tuple
my_dict = {'x': 10, 'y': 20}
for key, value in my_dict:
print(key, value)Solution
Step 1: Identify the iteration target
The loop tries to unpack two variables frommy_dictdirectly, which yields only keys.Step 2: Correct the iteration method
To unpack key and value, usemy_dict.items()instead of justmy_dict.Final Answer:
Missing .items() after my_dict -> Option CQuick Check:
Use my_dict.items() to unpack key, value [OK]
- Trying to unpack keys only without .items()
- Assuming dict directly yields key-value pairs
- Ignoring error message about unpacking
data = {'a': 0, 'b': 2, 'c': 0, 'd': 4}, which code snippet creates a new dictionary with only keys having non-zero values?Solution
Step 1: Understand dictionary comprehension with condition
We want to keep only items where value is not zero, so useif v != 0in comprehension.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 fromdata.items()and filters by value.Final Answer:
new_dict = {k: v for k, v in data.items() if v != 0} -> Option BQuick Check:
Use dict.items() and filter with if condition [OK]
- Forgetting .items() when unpacking key and value
- Swapping key and value in unpacking
- Using keys() without accessing values
