Find more articles in our new Python Knowledge Base

Not using get() to return a default value from a dict

Frequently you will see code create a variable, assign a default value to the variable, and then check a dict for a certain key. If the key exists, then the value of the key is copied into the value for the variable. While there is nothing wrong this, it is more concise to use the built-in method dict.get(key[, default]) from the Python Standard Library. If the key exists in the dict, then the value for that key is returned. If it does not exist, then the default value specified as the second argument to get() is returned. Note that the default value defaults to None if a second argument is not provided.

Anti-pattern

The code below initializes a variable called data to an empty string. Then it checks if a certain key called message exists in a dict called dictionary. If the key exists, then the value of that key is copied into the data variable.

Although there is nothing wrong with this code, it is verbose and inefficient because it queries the dictionary twice. The solution below demonstrates how to express the same idea in a more concise manner by using dict.get(key[, default]).

dictionary = {"message": "Hello, World!"}

data = ""

if "message" in dictionary:
    data = dictionary["message"]

print(data)  # Hello, World!

Best practice

Use dict.get(key[, default]) to assign default values

The code below is functionally equivalent to the original code above, but this solution is more concise.

When get() is called, Python checks if the specified key exists in the dict. If it does, then get() returns the value of that key. If the key does not exist, then get() returns the value specified in the second argument to get().

dictionary = {"message": "Hello, World!"}

data = dictionary.get("message", "")

print(data)  # Hello, World!

Status