Python 3.12 ·
✓ verified by execution on 2026-07-23
Unlike sequences, which are indexed by a range of numbers, dictionaries are indexed by keys, which can be any immutable type
python
tel = {'jack': 4098, 'sape': 4139}tel['guido'] = 4127print(tel['jack'])
Output
4098
Your output
Dictionary Constructors
The dict() constructor builds dictionaries directly from sequences of key-value pairs:
python
print(dict([('sape', 4139), ('guido', 4127)]))
Output
{'sape': 4139, 'guido': 4127}
Your output
Deleting Items
It is also possible to delete a key:value pair with del.
python
tel = {'jack': 4098, 'sape': 4139}del tel['sape']print(list(tel))
Output
['jack']
Your output
Missing Keys
It is an error to extract a value using a non-existent key.
python
tel = {'jack': 4098}try: print(tel['guido'])except KeyError as e: print(repr(e))
Output
KeyError('guido')
Your output
To prevent this error, you can use the .get() method.
python
tel = {'jack': 4098}print(tel.get('guido', 'Not Found'))
Output
Not Found
Your output
Dictionary Iteration
When looping through dictionaries, the key and corresponding value can be retrieved at the same time using the items() method.
python · visualize
knights = {'gallahad': 'the pure', 'robin': 'the brave'}for k, v in knights.items(): print(k, v)
Check yourself
Lists can be used as keys in a dictionary.
Reveal answer
Lists are mutable and therefore cannot be used as dictionary keys. Attempting to do so raises a TypeError. — Lists are mutable and therefore cannot be used as dictionary keys. Attempting to do so raises a TypeError.
Iterating over a dictionary directly with 'for item in my_dict' returns the values.
Reveal answer
Iterating over a dictionary directly yields its keys, not its values. — Iterating over a dictionary directly yields its keys, not its values.
Dictionaries in Python 3.12 are unordered.
Reveal answer
Since Python 3.7, dictionaries formally preserve the insertion order of their keys. — Since Python 3.7, dictionaries formally preserve the insertion order of their keys.
Challenges
Challenge 1 +15 XP
Write a function count_words(words) that takes a list of strings and returns a dictionary where keys are words and values are the number of times they appear.
python
Test 1 — expects "{'apple': 2, 'banana': 1} \n"
Need a hint? (−25% XP)
Use .get(word, 0) to fetch the current count or 0 if it doesn't exist, then add 1.
Show solution (0 XP)
def count_words(words): counts = {} for word in words: counts[word] = counts.get(word, 0) + 1 return countsprint(count_words(['apple', 'banana', 'apple']))
Challenge 2 +15 XP
Write a function merge_profiles(p1, p2) that takes two dictionaries and returns a new dictionary combining both. If keys overlap, p2 should win.
python
Test 1 — expects "{'name': 'jack', 'age': 40} \n"
Need a hint? (−25% XP)
Copy the first dictionary, then .update() it with the second.