Topic 51 of 64
Dictionary Loop Strategies
Overview
Iterating over dictionaries correctly is a daily Python task. Knowing when to use .items(), .keys(), and .values() — and how to build transformed dicts with dict comprehensions — separates junior from senior Python developers.
Syntax
python
d = {"a": 1, "b": 2, "c": 3}
# Iterate keys (default)
for key in d:
print(key)
# Iterate key-value pairs
for key, value in d.items():
print(f"{key}: {value}")
# Iterate values only
for value in d.values():
print(value)
# Dict comprehension
squared = {k: v**2 for k, v in d.items()}
# {'a': 1, 'b': 4, 'c': 9}
# Filter with comprehension
filtered = {k: v for k, v in d.items() if v > 1}Common Pitfalls
- Iterating 'for key in dict' gives keys only — easy to forget to use .items() when you need both key and value.
- Dict comprehension is Pythonic but can hurt readability with complex expressions — prefer explicit loops for clarity.
- Interview tip: sorted(d.items(), key=lambda x: x[1]) sorts a dict by value — returns a list of tuples.
Real-World Example
Invert a dictionary (swap keys and values)
example
python
def invert_dict(d: dict) -> dict:
if len(d) != len(set(d.values())):
raise ValueError("Values must be unique to invert")
return {v: k for k, v in d.items()}
code_map = {"A": 65, "B": 66, "C": 67}
reversed_map = invert_dict(code_map)
print(reversed_map) # {65: 'A', 66: 'B', 67: 'C'}