aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bot/resources/tags/keyerror.md17
1 files changed, 17 insertions, 0 deletions
diff --git a/bot/resources/tags/keyerror.md b/bot/resources/tags/keyerror.md
new file mode 100644
index 000000000..d0c069004
--- /dev/null
+++ b/bot/resources/tags/keyerror.md
@@ -0,0 +1,17 @@
+Often while using dictionaries in Python, you may run into `KeyErrors`. This error is raised when you try to access a key that isn't present in your dictionary. \
+While you can use a `try` and `except` block to catch the `KeyError`, Python also gives you some other neat ways to handle them.
+## __The `dict.get` method__
+The [dict.get](https://docs.python.org/3/library/stdtypes.html#dict.get) method will return the value for the key if it exists, or None (or a default value that you specify) if the key doesn't exist. Hence it will _never raise_ a KeyError.
+```py
+>>> my_dict = {"foo": 1, "bar": 2}
+>>> print(my_dict.get("foo"))
+1
+>>> print(my_dict.get("foobar"))
+None
+>>> print(my_dict.get("foobar", 3)) # here 3 is the default value to be returned, in case the key doesn't exist
+3
+>>> print(my_dict)
+{'foo': 1, 'bar': 2} # note that the new key was NOT added to the dictionary
+```
+\
+Some other methods that can be used for handling KeyErrors gracefully are the [dict.setdefault](https://docs.python.org/3/library/stdtypes.html#dict.setdefault) method, or by using [collections.defaultdict](https://docs.python.org/3/library/collections.html#collections.defaultdict).