Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Check if a given key already exists in a dictionary

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?

like image 759
Mohan Gulati Avatar asked Oct 21 '09 19:10

Mohan Gulati


People also ask

What is dictionary write a Python script to check whether a given key already exists in a dictionary?

Here is source code of the Python Program to check if a given key exists in a dictionary or not. The program output is also shown below. d={'A':1,'B':2,'C':3} key=raw_input("Enter key to check:") if key in d. keys(): print("Key is present and value of the key is:") print(d[key]) else: print("Key isn't present!")

How do you check if an item is in a dictionary Python?

Check if Variable is a Dictionary with is Operator We can use the is operator with the result of a type() call with a variable and the dict class. It will output True only if the type() points to the same memory location as the dict class. Otherwise, it will output False .

How do you check if a value exists in a list of dictionaries?

Use any() & List comprehension to check if a value exists in a list of dictionaries.


1 Answers

in is the intended way to test 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") 

If you wanted a default, you can always use dict.get():

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

and if you wanted to always ensure a default value for any key you can either use dict.setdefault() repeatedly or defaultdict from the collections module, like so:

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

but in general, the in keyword is the best way to do it.

like image 173
Chris B. Avatar answered Oct 03 '22 16:10

Chris B.