HiveBrain v1.2.0
Get Started
← Back to all entries
patternpythonCriticalCanonical

Check if a given key already exists in a dictionary

Submitted by: @import:stackoverflow-api··
0
Viewed 0 times
keycheckalreadyexistsdictionarygiven

Problem

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?

Solution

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(100):
    key = i % 10
    d[key] = d.get(key, 0) + 1


To provide a default value for every key, either use dict.setdefault() on each assignment:

d = {}

for i in range(100):
    d[i % 10] = d.setdefault(i % 10, 0) + 1


...or better, use defaultdict from the collections module:

from collections import defaultdict

d = defaultdict(int)

for i in range(100):
    d[i % 10] += 1

Code Snippets

d = {"key1": 10, "key2": 23}

if "key1" in d:
    print("this will execute")

if "nonexistent key" in d:
    print("this will not")
d = {}

for i in range(100):
    key = i % 10
    d[key] = d.get(key, 0) + 1
d = {}

for i in range(100):
    d[i % 10] = d.setdefault(i % 10, 0) + 1
from collections import defaultdict

d = defaultdict(int)

for i in range(100):
    d[i % 10] += 1

Context

Stack Overflow Q#1602934, score: 5715

Revisions (0)

No revisions yet.