Lessons · Python · looping over a dict
Walking a dict: keys, values, or both
for k in d gives keys; d.values() gives values; d.items() gives (key, value) pairs.
Hone is a place to practise programming. This is one of its lessons, written out in full and free to read without an account.
What it is for
Config, counts, records by id: dicts hold most structured data, and you constantly need to walk them to report, total, or transform.
How to think about it
Do I need the keys, the values, or both? Ask what you need inside the loop. Only the names: keys. Only the numbers: values. Both, which is most of the time: items() with two loop variables.
Worked example
stock = {"pen": 3, "ink": 0}Product to quantity.for name, qty in stock.items():Two names, because items() gives pairs.
if qty == 0:Use the value.
print(name, "is out")Use the key. 'ink is out'.
Your turn
Add up every quantity.
total = 0
for q in stock.():
total += qSolve one with the tests running
The trap
Changing a dict's size while looping over it raises an error. Collect the keys to delete first, then delete after the loop.
Practise looping over a dict on HoneA question on it now, a coding challenge where there is one, and it is remembered for review. Free, no email needed.