Select Page

How to Solve Python AttributeError: ‘dict’ object has no attribute ‘has_key’

by | Programming, Python, Tips

We use dictionaries to store data values in key:value pairs in Python. The dictionary method has_key() returns True if a specified key is present in the dictionary. Otherwise, it returns False.

As of Python major version 3, has_key was removed from the dictionary methods. If you try to call the has_key() method on a dictionary using Python 3, you will raise the AttributeError: ‘dict’ object has no attribute ‘has_key’.

If you are using Python 3, you can no longer use has_key. Use the in operator instead.

This tutorial will go through the error in detail and how to solve it with code examples.

AttributeError: ‘dict’ object has no attribute ‘has_key’

AttributeError occurs in a Python program when we try to access an attribute (method or property) that does not exist for a particular object. The part “‘dict’ object has no attribute ‘has_key’” tells us that the dict object we are handling does not have the has_key attribute. We will raise this error when calling the has_key() method of a dictionary using Python 3.


Let’s look at an example where we create a dictionary and use the has_key() method to search for a specific key. The dictionary will contain pizza names as keys and their prices as values.

a_dict = {'margherita':7.99, 'pepperoni':8.99, 'ham and pineapple':10.99}
print(a_dict.has_key('four cheeses')
AttributeError                            Traceback (most recent call last)
<ipython-input-1-09e10e5c5c36> in <module>
      1 a_dict = {'margherita':7.99, 'pepperoni':8.99, 'ham and pineapple':10.99}
----> 2 print(a_dict.has_key('margherita'))
      3 print(a_dict.has_key('four cheeses'))

AttributeError: 'dict' object has no attribute 'has_key'

The Python interpreter throws the error because we are using Python 3. The dictionary method has_key() exists in Python 2.

Solution #1: Use in operator

We can use the in operator to check if a key is present in a dictionary to solve this error. Let’s look at the revised code:

a_dict = {'margherita':7.99, 'pepperoni':8.99, 'ham and pineapple':10.99}
print('margherita' in a_dict)
print('four cheeses' in a_dict)

The Margherita pizza is present in the dictionary, so the in operator returns True. The operator returns False for the four cheeses pizza, which is not in the dictionary.

Solution #2: Change Python Major Version from 3 to 2

If you want to use an earlier Python major version, you can use Conda to create a virtual environment with a Python 2 interpreter. To create a virtual environment, use the following command:

conda create -n py27 python=2.7

Then activate the environment using:

conda activate py27

You should see “py27” next to the command line prompt in parenthesis. Then you can use has_key() with no AttributeError:

conda activate py27

Let’s check what Python version we are using the sys module

import sys

2.7.16 |Anaconda, Inc.| (default, Sep 24 2019, 16:55:38) 
[GCC 4.2.1 Compatible Clang 4.0.1 (tags/RELEASE_401/final)]

Then use the has_key() method:

a_dict = {'margherita':7.99, 'pepperoni':8.99, 'ham and pineapple':10.99} }


print(a_dict.has_key('four cheeses'))


Congratulations on reading to the end of this tutorial! The AttributeError: ‘dict’ object has no attribute ‘has_key’ occurs when you try to call the has_key() method on a dictionary using Python major version 3. You can only use has_key() in Python 2.

To solve this error, use the in operator to check if a key exists in a dictionary. Otherwise, revert to Python 2 by creating a virtual environment.

For further reading on AttributeErrors involving the list object, go to the articles:

To learn more about Python for data science and machine learning, go to the online courses page on Python for the most comprehensive courses available.

Have fun and happy researching!