I wanted to test if a key exists in a dictionary before updating the value for the key. I wrote the following code:
if 'key1' in dict.keys(): print "blah" else: print "boo"
I think this is not the best way to accomplish this task. Is there a better way to test for a key in the dictionary?
Advertisement
Answer
in tests for the existence of a key in a dict:
d = {"key1": 10, "key2": 23}
if "key1" in d:
    print("this will execute")
if "nonexistent key" in d:
    print("this will not")
Use dict.get() to provide a default value when the key does not exist:
d = {}
for i in range(10):
    d[i] = d.get(i, 0) + 1
To provide a default value for every key, either use dict.setdefault() on each assignment:
d = {}
for i in range(10):
    d[i] = d.setdefault(i, 0) + 1
or use defaultdict from the collections module:
from collections import defaultdict
d = defaultdict(int)
for i in range(10):
    d[i] += 1