TypeError: ‘dict_items’ object is not subscriptable in Python is a common error related to the dict_items type in Python. The below explanations can help you know more about the causes and solutions to fix this error.
How does the TypeError: ‘dict_items’ object is not subscriptable in Python happen?
This error happens due to the following reason:
First, the error happens when you are attempting to index an element at a specific position in the dict_items. The dict_items is a type, this type is retrieved from the method items() of a dict type in Python. For example:
myDict = {'learnshareit': 'LearnShareIT', 'author': None} # Get items in the dict items = myDict.items() print(items)
Output:
dict_items([('learnshareit', 'LearnShareIT'), ('author', None)])
The dict_items is a type in Python; it is different from the list type in Python as it is not subscriptable. Therefore, whenever you are trying to subscript the items in the dict_items type, you will encounter this error. For example:
myDict = {'learnshareit': 'LearnShareIT', 'author': None} # Get items in the dict items = myDict.items() # Subscript an item in the dict_items type print(items[1])
Output:

The example above shows that we have used the index syntax to single index the second item in the dict, but what we received is the error as above. It happens because in Python only these four types: dict, list, tuple or str can be subscriptable. If you want to index a list element or a list_items element, please read the following solutions.
How to solve the error?
Convert dict_items to a list
To solve TypeError: ‘dict_items’ object is not subscriptable in Python, which is because of the dict_items indexing in Python, you must use the list() function to convert it to a list to make it susscriptable:
myDict = {'learnshareit': 'LearnShareIT', 'author': None} # Get items in the dict myItems = list(myDict.items()) # Subscript an item in the list type print(myItems[0])
Output:
('learnshareit', 'LearnShareIT')
The items in the list is actually a tuple (a pair) and as it is a pair, it can be subscriptable too.
Using a for loop
Sometimes you don’t want to use the list() function to convert the dict_items because it will consume more memory for doing just a small task. In this case, you might want to iterate through each element in the dict_items directly through a for loop.
myDict = {'learnshareit': 'LearnShareIT', 'author': None} # Get items in the dict items = myDict.items() # Get items in dict_items type for i in myDict.items(): print (i)
Output:
('learnshareit', 'LearnShareIT')
('author', None)
When you want to get the items at a given index in the dict_items, you can create a count variable and increment after each loop and print it out whenever the count matches the index you want.
myDict = {'learnshareit': 'LearnShareIT', 'author': None} # Get items in the dict items = myDict.items() # Create a count variable count = 0 # Get first item in dict_items type for i in myDict.items(): if (count == 0): print (i) # Break the loop whenver reach the desired position break else: # Increment the count through each loop count = count+1
Output:
('learnshareit', 'LearnShareIT')
As you can see, this approach doesn’t need a function to convert the dict_items to a list, but it uses a loop and goes from the first element to the last element until it reaches the desired index. Although this approach is thought to consume less memory, it will consume more time when the given index is far from the 0th position.
Summary
We have learned how to deal with the TypeError: ‘dict_items’ object is not subscriptable in Python. By using the first approach, as it is considered effective and quick, you can easily solve it.
Maybe you are interested:
- TypeError: ‘datetime.datetime’ object is not callable
- TypeError: str.replace() takes no keyword arguments (Python)
- TypeError: can’t multiply sequence by non-int of type ‘str’

I’m Edward Anderson. My current job is as a programmer. I’m majoring in information technology and 5 years of programming expertise. Python, C, C++, Javascript, Java, HTML, CSS, and R are my strong suits. Let me know if you have any questions about these programming languages.
Name of the university: HCMUT
Major: CS
Programming Languages: Python, C, C++, Javascript, Java, HTML, CSS, R