Have you seen the error below?
1 2 3 4 5 6 |
Traceback (most recent call last): File "C:/Users/foo/PycharmProjects/pythonProject3/main.py", line 29, in <module> main() File "C:/Users/foo/PycharmProjects/pythonProject3/main.py", line 19, in main a['foo'] += 5 KeyError: 'foo' |
Of course you have. And you know, that it is because you have written something extremely unwise like this:
1 2 |
a = dict() a['foo'] += 5 |
Yeah. You cannot increment the value of a non-existent key. Unless…
Unless you do not decide to use the default dictionary object – https://docs.python.org/3/library/collections.html?highlight=defaultdict#collections.defaultdict
Then you can nicely increment anything, without caring whether it exists. And instead of having a key error on the example above, you will have a simple 5. Let’s see the example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
from collections import defaultdict def main(): addresses = defaultdict(int) addresses['Druzhba 2'] += 100 addresses['Druzhba 2'] += 100 addresses['Sofia'] = 20 addresses['Plovdiv'] +=30 print_dictionary(addresses) football_teams = defaultdict(str) football_teams['Bulgaria'] = ['CSKA', 'Levski', 'Lokomotive'] football_teams['Not Bulgaria'] = 'Manchester United' football_teams['Really Not Bulgaria'] += 'PSG' print_dictionary(football_teams) print(football_teams.__missing__('Bulgaria')) print(football_teams.__missing__('Foo')) def print_dictionary(dict): for a, b in dict.items(): print(f'{a} --> {b}') if __name__ == '__main__': main() |
This is what we will get as a result:
That’s all! Enjoy it! 🙂