我下面有一个函数,它使用输入的函数参数搜索字典键匹配。如果找到关键匹配,我希望索引 1 处的值(团队)更改为调用函数时输入的所需团队:
dict1 = {'Messi' : ('Argentina','Barcelona'), 'Ronaldo' : ('Portugal','Juventus'), 'Robben': ('Netherlands','Bayern')}
def setNewTeam(plyr, newTeam):
for x in dict1:
if plyr == x:
dict1[plyr][1] = newTeam
setNewTeam('Messi', 'Manchester')
但是,当我运行此代码时,我得到:
TypeError: 'tuple' object does not support item assignment
我知道这一定是因为元组不可变,但由于我正在使用字典,所以必须有一种方法可以使这项工作有效,有人可以在这里伸出援手吗?
谢谢!
最佳答案
正如错误消息所示,您无法将新项目分配给元组,因为元组是 python 中的不可变对象(immutable对象)。
my_tup = (1,2,3)
my_tup[0] = 2 # TypeError
你可以做的是使用列表来代替:
dict1 = {'Messi' : ['Argentina','Barcelona'], 'Ronaldo' : ['Portugal','Juventus'], 'Robben': ['Netherlands','Bayern']}
def setNewTeam(plyr, newTeam):
for x in dict1:
if plyr == x:
dict1[plyr][1] = newTeam
setNewTeam('Messi', 'Manchester')
请注意如何使用 []
创建列表,而元组则使用 ()
创建。
关于python - 如何更改具有多个值(元组)的字典的特定值而不出现 TypeError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53539915/