Skip to content
Home / Fundamentals

Check if a given key already exists in a Python dict

Checking if a given key already exists in a dictionary is a common operation in Python. There are several ways to do this, depending on what you want to achieve. Here are some examples:

Using the in keyword

The most straightforward way to check if a key exists in a dictionary is to use the in keyword:

my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'a' in my_dict:
    print('Key "a" exists in the dictionary.')
else:
    print('Key "a" does not exist in the dictionary.')

if 'd' in my_dict:
    print('Key "d" exists in the dictionary.')
else:
    print('Key "d" does not exist in the dictionary.')

This will output:

Key "a" exists in the dictionary.
Key "d" does not exist in the dictionary.

Using the in keyword is simple and effective, but it has one limitation: it can only check if the key exists, not if the value is None or False. If you want to check if the value is None or False, you can use the get() method, as shown in the next section.

Using the get() method

The get() method returns the value for a given key, or a default value if the key does not exist. This allows you to check if the key exists and if the value is not None or False. Here is an example:

my_dict = {'a': 1, 'b': 2, 'c': 3, 'd': None, 'e': False}

if my_dict.get('a') is not None:
    print('Key "a" exists in the dictionary and has a value.')
else:
    print('Key "a" does not exist or has no value.')

if my_dict.get('d') is not None:
    print('Key "d" exists in the dictionary and has a value.')
else:
    print('Key "d" does not exist or has no value.')

if my_dict.get('e') is not None:
    print('Key "e" exists in the dictionary and has a value.')
else:
    print('Key "e" does not exist or has no value.')

if my_dict.get('f') is not None:
    print('Key "f" exists in the dictionary and has a value.')
else:
    print('Key "f" does not exist or has no value.')

This will output:

Key "a" exists in the dictionary and has a value.
Key "d" does not exist or has no value.
Key "e" exists in the dictionary and has a value.
Key "f" does not exist or has no value.

Using the dict.keys() method

Another way to check if a key exists in a dictionary is to use the dict.keys() method, which returns a view object that displays a list of all the keys in the dictionary. You can then use the in keyword to check if a key exists in a dictionary using the dict.keys() method, you can do the following:

my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'a' in my_dict.keys():
    print('Key "a" exists in the dictionary.')
else:
    print('Key "a" does not exist in the dictionary.')

if 'd' in my_dict.keys():
    print('Key "d" exists in the dictionary.')
else:
    print('Key "d" does not exist in the dictionary.')

This will output:

Key "a" exists in the dictionary.
Key "d" does not exist in the dictionary.

The dict.keys() method is useful if you want to check if a key exists and do something with the keys in the dictionary, for example, to iterate over them. However, it has one limitation: it returns a view object, not a list, so you cannot index it or use it in other contexts where a list is expected. If you need a list of the keys, you can use the list() function to convert the view object to a list:

keys = list(my_dict.keys())

Using the try and except statement

Another way to check if a key exists in a dictionary is to use a try and except statement to handle the KeyError exception that is raised when you try to access a non-existent key:

my_dict = {'a': 1, 'b': 2, 'c': 3}

try:
    value = my_dict['a']
    print('Key "a" exists in the dictionary. Value:', value)
except KeyError:
    print('Key "a" does not exist in the dictionary.')

try:
    value = my_dict['d']
    print('Key "d" exists in the dictionary. Value:', value)
except KeyError:
    print('Key "d" does not exist in the dictionary.')

This will output:

Key "a" exists in the dictionary. Value: 1
Key "d" does not exist in the dictionary.

Using the try and except statement is more verbose than the other methods, but it has the advantage of allowing you to handle the KeyError exception in a specific way, for example, by providing a default value or by raising a different exception.