我正在尝试更改元组的特定元素的值。这是代码:
y=((2,2),(3,3))
y[1][1]=999
print('y: ',y)
TypeError: 'tuple' object does not support item assignment
我知道Tuples are immutable objects. “Immutable” means you cannot change the values inside a tuple. You can only remove them.
,我想知道是否有变通办法?我无法为y
创建列表列表,因为我稍后将使用y
作为字典中的关键字。
如果您不希望y
的修改值指向同一个字典条目,那么您可以转换为列表列表,对其进行修改,然后转换回元组。例如:
d = { ((2,2),(3,3)) : 'old', ((2, 2), (3, 999)) : 'new' }
y = ((2,2),(3,3))
print(d[y])
z = list(list(a) for a in y)
z[1][1] = 999
y = tuple(tuple(a) for a in z)
print(d[y])
输出:
old
new
如果以后需要将元组用作字典的键,解决方法是将其转换为列表,进行更改,然后再次转换为元组。没有办法直接更改这些值。
y=((2,2),(3,3))
y = list(y)
for i in range(len(y)):
y[i] = list(y[i])
y[1][1] = 999
for i in range(len(y)):
y[i] = tuple(y[i])
y = tuple(y)
print('y: ',y)
不能更改元组的值,因为它们是常量。但是,您可以将其转换回要更改的列表。
代码:
x=((2,2),(3,3))
y = list(x)
print(y)
for i in range(len(y)):
y[i] = list(x[i])
y[1][1]=999
print(y)