Using methods for lookup#

We’ve learned in previous lessons that values in dictionaries can be accessed by including the corresponding keys between brackets []. Let’s bring back our example class_dict and read its contents.

class_dict = {'instructors': 2, 'TAs': 10, 'tutors': 35, 'students': 600}

If the number of instructors in the class is inquired, for instance, then the number can be accessed by the following:

>>> class_dict['instructors']
2

What happens if your code tries to access a key not included in the dictonary? It results in an error.

>>> class_dict['pets']
Traceback (most recent call last):
File "<pyshell#21>", line 1, in <module>
    class_dict['pets']
KeyError: 'pets'

The dictionary method get() can access dictionaries in a similar fashion except that it does not result in KeyError. When one wants to read the value that corresponds to a specific key in a dictionary, the method get() can be used in the format of dictionary.get(key). If the number of instructors in the class is asked again, then the result can be returned as follows, which will have the same effect as class_dict['instructors'].

>>> class_dict.get('instructors')
2

However, when we try to access a key that does not exist, nothing is returned and the next prompt shows up right away.

>>> class_dict.get('pets')
>>>

This is different from the previous way because it does not crash with KeyError. What actually happens is that the get() method returns None. We can confirm this by printing it out.

>>> print(class_dict.get('pets'))
None

Since it’s preferable to avoid exceptional control flow, the get method is a good choice when you’re not sure if the key is in the map. One wrinkle: it’s hard to tell the difference between an absent key and a key mapping to the value None!

Get with a default#

You can also call the get method with a default, as in: