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