'Updating a value in a tuple-value in nested dictionary in python
I have a following dictionary-
Diction = {'stars': {(4, 3): (2, 3, 100, 0), (3, 4): (3, 2)}}
I am trying to update a value as following:-
list(Diction['stars'][(4,3)])[-1] = 8765 #converting to list as tuples are immutable
After that I printed to verify, but value has not changed and it does not show any error.
print(list(Diction['stars'][(4,3)]))
Could anyone please let me know how can I update the value here?
Solution 1:[1]
As you noted yourself, tuples are immutable. You cannot change their contents.
You can of course always just create a new tuple with the updated value and replace the old tuple with this one.
Something like
Diction = {'stars': {(4, 3): (2, 3, 100, 0), (3, 4): (3, 2)}}
temp = list(Diction['stars'][(4,3)])
temp[-1] = 8765
Diction['stars'][(4,3)] = tuple(temp) # convert back to a tuple
Solution 2:[2]
When you cast your tuple to a list, you essentially make a copy of the tuple. If you still want to have the same functionality and keep the items as a tuple and not a list, you can do the following:
Diction = {'stars': {(4, 3): (2, 3, 100, 0), (3, 4): (3, 2)}}
my_item = list(Diction["stars"][4, 3])
my_item[-1] = 8765
Diction['stars'][4, 3] = tuple(my_item)
Here, we make the copy first, change it, then add the value back to the original as a tuple.
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | dumbPotato21 |
| Solution 2 | Anonymous4045 |
