python - 如何更改具有多个值(元组)的字典的特定值而不出现 TypeError

标签 python dictionary set tuples

我下面有一个函数,它使用输入的函数参数搜索字典键匹配。如果找到关键匹配,我希望索引 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/

相关文章:

python - 如何在Python中重新初始化变量?

python - 广度优先搜索 : how to get currency exchange?

dictionary - 如何使用反射反转 map

scala - 将元组添加到集合中不起作用

ios - Swift 3 集合运算减法

javascript - 在 Facebook 应用程序中自动完成的替代方法

python - 在 python 上快速加载文件

swift - 使用创建字典编译 Swift 源文件问题

python - Python 中的有序字典

MongoDb - 如何使用 $set 更新嵌套对象的多个元素?