Skip to content
Home / Fundamentals

Python Access Dict Entries

A dictionary is a collection of key-value pairs in Python. You can access the items of a dictionary by referring to its key name, inside square brackets [].

Dictionary Key

To access the value of a specific key in a dictionary, you can use the following syntax:

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# access the value of key1
value1 = my_dict['key1']
print(value1)  # Output: 'value1'

get() method

You can also use the get() method to access the value of a specific key in a dictionary. This method returns the value for the given key, if it exists in the dictionary. If the key does not exist, it returns a default value. The default value is None if not specified.

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# get the value of key1
value1 = my_dict.get('key1')
print(value1)  # Output: 'value1'

# get the value of key3 (non-existent key)
value3 = my_dict.get('key3')
print(value3)  # Output: None

# get the value of key3 (non-existent key) with default value
value3 = my_dict.get('key3', 'default_value')
print(value3)  # Output: 'default_value'

get() or key access method?

When to Use Get()

The get() method is a safer and more efficient way to access the value of a key in a dictionary, compared to using the square brackets []. Here are a few reasons why you should use get():

Handles non-existent keys gracefully: When you use the square brackets to access a non-existent key in a dictionary, it will raise a KeyError exception. On the other hand, the get() method will return a default value (None if not specified) if the key does not exist in the dictionary. This can save you the trouble of handling the KeyError exception and make your code more robust.

Faster than using a try-except block: If you want to handle the KeyError exception when using the square brackets, you can use a try-except block. However, this can be slower than using the get() method, as the latter does not involve any exception handling.

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# using try-except block to handle KeyError
try:
    value = my_dict['key3']
except KeyError:
    value = None
print(value)  # Output: None

# using get() method
value = my_dict.get('key3')
print(value)  # Output: None

More readable and expressive: The get() method clearly communicates the intention of accessing the value of a key and handling the case when the key does not exist. This can make your code more readable and expressive.

# using square brackets
value = my_dict['key1'] if 'key1' in my_dict else None

# using get() method
value = my_dict.get('key1')

When to Use Key Access

There are a few scenarios where it might be more appropriate to use the key access method (square brackets []) instead of the get() method to access the value of a dictionary item in Python:

The key is guaranteed to exist: If you are certain that the key exists in the dictionary, using the square brackets can be more concise and efficient than using the get() method.

# using square brackets
value = my_dict['key1']

# using get() method
value = my_dict.get('key1')

You need to raise a KeyError exception: If you want to raise a KeyError exception when the key does not exist in the dictionary, you can use the square brackets. This can be useful if you want to enforce the presence of a specific key in the dictionary and handle the exception in a higher level of your code.

# using square brackets
value = my_dict['key3']  # this will raise a KeyError exception
You need to specify a default value other than None: If you want to specify a default value other than None when the key does not exist in the dictionary, you can use the square brackets with the .get() method.
```python
# using square brackets with .get() method
value = my_dict.get('key3', 'default_value')

All Dictionary Keys

To access the keys of a dictionary, you can use the keys() method. This method returns a view object that contains the keys of the dictionary. You can convert the view object to a list using the list() function.

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# get the keys of the dictionary
keys = my_dict.keys()
print(keys)  # Output: dict_keys(['key1', 'key2'])

# convert the keys to a list
keys = list(my_dict.keys())
print(keys)  # Output: ['key1', 'key2']

Get all Values

To access the values of a dictionary, you can use the values() method. This method returns a view object that contains the values of the dictionary. You can convert the view object to a list using the list() function.

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# get the values of the dictionary
values = my_dict.values()
print(values)  # Output: dict_values(['value1', 'value2'])

# convert the values to a list
values = list(my_dict.values())
print(values)  # Output: ['value1', 'value2']

Items To access both the keys and values of a dictionary, you can use the items() method. This method returns a view object that contains the key-value pairs of the dictionary. You can convert the view object to a list using the list() function.

# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# get the items (key-value pairs) of the dictionary
items = my_dict.items()
print(items)  # Output: dict_items([('key1', 'value1'), ('key2', 'value2')])

# convert the items to a list
items = list(my_dict.items())
print(items)  # Output: [('key1', 'value1'), ('key2', 'value2')]

Best Practices

Here are a few best practices for accessing dictionary items in Python:

  • Use the get() method instead of the square brackets [] to access the value of a key, as it handles non-existent keys gracefully.
  • Use the keys(), values(), and items() methods to access the keys, values, and key-value pairs of a dictionary, respectively. Convert the view object to a list if you need to iterate over the items multiple times.
  • Use the in keyword to check if a key exists in a dictionary.
# define the dictionary
my_dict = {'key1': 'value1', 'key2': 'value2'}

# check if key1 exists in the dictionary
if 'key1' in my_dict:
    print('key1 exists')

# check if key3 exists in the dictionary
if 'key3' in my_dict:
    print('key3 exists')  # this line will not be executed