In Python, we have a built-in data structure ”
tuple ” which is similar to Python list and store elements in sequential order. The only difference between a Python list and a tuple is, the tuple is an immutable data structure, which means once a tuple object is defined we can not change its elements.
If we try to change the tuple elements using indexing and assignment operator we will receive the
TypeError: 'tuple' object does not support item assignment Error.
In this Python guide, we will discuss this error in detail and learn how to debug it. We will also walk through a common example to demonstrate this error.
So without further ado, let’s get started with the Error statement.
Python Error: TypeError: ‘tuple’ object does not support item assignment
The Error Statement
TypeError: 'tuple' object does not support item assignment is divided into two parts Exception Type and Error Message.
- TypeError (Exception Type)
- ‘tuple’ object does not support item assignment (Error Message)
TypeError is a standard Python exception. It is raised in a Python program when we try to perform an invalid or unsupported operation on a Python object.
2. ‘tuple’ object does not support item assignment
This error message tells us that the tuple object does not support new value assignment to its elements.
You will only encounter this error message when you try to change the values of a tuple element, using indexing.
Although we can use indexing to access the individual tuple elements, we can not use indexing to change tuple elements values.
# initialize a tuple object letters = ('a', 'b', 'c', 'e') # try to change the tuple elements (error) letters = 'd' print(letters)
Traceback (most recent call last): File "main.py", line 5, in letters = 'd' TypeError: 'tuple' object does not support item assignment
Here we are getting this error because in line 5 we are trying to assign a new value to the tuple “
letters“. As tuple does not support element change operation, it threw the error when we try to assign a new value to the tuple element.
Now let’s discuss a common scenario example, and in the solution, we will see an alternative way to debug this problem and add change the value of a tuple element using some logic.
Common Example Scenario
Tuples are faster as compared to the Python list. That’s why many Python developers use tuples to store items or elements values. Although tuple supports element access using indexing, it throws an error when changing its elements. This is also one of the main reasons why many pythoneer use tuples instead of lists, when they do not want to change the elements of the container, throughout the program.
But let’s say you come across a situation when you want to change the element value of a tuple then what would you do.
Here we will discuss an example where we first try to change one of the values of a tuple, using indexing. Then in the solution, we will discuss how can we achieve it.
# initialize tuple sem_1_subjects = ("Java", "Operating System", "Data Structure & Algo", "Data Base Management System", "Networking System") # change first value of the tuple sem_1_subjects = "Python" print(sem_1_subjects)
Traceback (most recent call last): File "main.py", line 5, in <module> sem_1_subjects = "Python" TypeError: 'tuple' object does not support item assignment
Break the code
The error statement is quite expected. We know that when we try to change the tuple element value using indexing we get the error.
In line 5 we tried to change the first element of tuple ”
sem_1_subjects ” from
"Python" , which is the cause of this error statement.
When we use the tuple element as a container to store elements, we thought of that container as intact throughout the program. But incase when we come across the situation where we need to change the value of the tuple elements, there we first need to convert that tuple object to a list using
list() function then only we can change its values.
After changing the value we can convert back the list object to the tuple using
# initialize tuple sem_1_subjects = ("Java", "Operating System", "Data Structure & Algo", "DataBase Management System", "Networking System") # change the tuple to list sem_1_subjects = list(sem_1_subjects) # change first value of list sem_1_subjects = "Python" # convert the list back to tuple sem_1_subjects = tuple(sem_1_subjects) print(sem_1_subjects)
('Python', 'Operating System', 'Data Structure & Algo', 'DataBase Management System', 'Networking System')
In this Python tutorial, we discussed the “TypeError: ‘tuple’ object does not support item assignment” Error in detail. This error raises in a Python program when we try to change the value of a tuple element using the assignment operator. A tuple is an immutable data structure and once we defined its all elements we can not change them. To change its elements first need to convert the tuple object to a list then only we can change its values.
If you are still getting this error in your Python program, you can share your code in the comment section. We will try to help you in debugging.
People are also reading:
- Python typeerror: ‘str’ object is not callable Solution
- Python SyntaxError: can’t assign to function call Solution
- Python TypeError: ‘method’ object is not subscriptable Solution
- Python typeerror: list indices must be integers or slices, not str Solution
- Python NameError name is not defined Solution
- Python typeerror: ‘list’ object is not callable Solution
- Python IndexError: tuple index out of range Solution
- Python AttributeError: ‘numpy.ndarray’ object has no attribute ‘append’ Solution
- Python typeerror: string indices must be integers Solution
- Python TypeError: ‘float’ object is not callable Solution