📅 2017-Jul-03 ⬩ ✍️ Ashwin Nanjappa ⬩ 🏷️ dict, get, python ⬩ 📚 Archive
The Python dictionary provides an associate array interface to get the value associated with a key:
>>> d = { 1:"cat", 2:"rat" }
>>> d[1]
'cat'
However, this interface is not very friendly if you lookup a key that
does not exist. In such a case, it throws a KeyError
exception:
>>> d[3]
KeyError: 3
Python dictionary provides a get method that is
safer, it returns a None value if the key is not
present:
>>> print(d.get(3))
None
This method is actually cooler than it looks cause you can make it return any default value you want when the key is not present in the dictionary. You do this by passing the default value as the second argument:
>>> print(d.get(1, "elephant"))
cat
>>> print(d.get(3, "elephant"))
elephant
In many cases, we might have the key in the dictionary, but its value
is set to some default value like None or empty string or
empty list or empty dict or such values. But at the point we are picking
values from keys assume we want such default-valued keys to return a
different default value. The trick is that since such default values
default to False in Python, we can use that to our
advantage.
For example, say the dictionary is already created and not under our
control. But, whenever I read values from it, I want
elephant if the key does not exist or if the value is a
default value that evaluates to False. It gives rise to an
elegant Python idiom using get method and or
operator:
>>> d = { 1:"cat", 2:"rat", 3:None, 4:"" }
>>> v = d.get(1) or "elephant" ; print(v)
cat
>>> v = d.get(3) or "elephant" ; print(v)
elephant
>>> v = d.get(4) or "elephant" ; print(v)
elephant
>>> v = d.get(99) or "elephant" ; print(v)
elephant