Check if a given key already exists in a dictionary and increment it Check if a given key already exists in a dictionary and increment it python python

Check if a given key already exists in a dictionary and increment it


You are looking for collections.defaultdict (available for Python 2.5+). This

from collections import defaultdictmy_dict = defaultdict(int)my_dict[key] += 1

will do what you want.

For regular Python dicts, if there is no value for a given key, you will not get None when accessing the dict -- a KeyError will be raised. So if you want to use a regular dict, instead of your code you would use

if key in my_dict:    my_dict[key] += 1else:    my_dict[key] = 1


I prefer to do this in one line of code.

my_dict = {}my_dict[some_key] = my_dict.get(some_key, 0) + 1

Dictionaries have a function, get, which takes two parameters - the key you want, and a default value if it doesn't exist. I prefer this method to defaultdict as you only want to handle the case where the key doesn't exist in this one line of code, not everywhere.


I personally like using setdefault()

my_dict = {}my_dict.setdefault(some_key, 0)my_dict[some_key] += 1