如何在不获取TypeE的情况下更改具有多个值(元组)的字典的特定值

2024-06-15 22:53:05 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我知道这一定是因为元组是不可变的,但肯定有一种方法使这项工作,因为我与字典的工作,有人可以在这里伸出援手吗?你知道吗

谢谢你!你知道吗


Tags: 函数字典函数参数团队调用函数argentinaportugaldict1
3条回答
dict1 = {'Messi' : ('Argentina','Barcelona'), 'Ronaldo' : ('Portugal','Juventus'), 'Robben': ('Netherlands','Bayern')}

def setNewTeam(plyr, newTeam):
        for x in dict1:
            if plyr == x:
                dict1[plyr] = (dict1[plyr][0], newTeam)

setNewTeam('Messi', 'Manchester')

正如错误消息所说,不能将新项分配给元组,因为元组在python中是不可变的对象。你知道吗

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')

注意列表是如何使用[]创建的,而元组使用()。你知道吗

由于要更新值,tuple不是好的数据结构。你应该使用列表。 如果仍要使用元组,可以使用以下内容构建一个全新的元组: dict1[plyr] = (dict1[plyr][0], newTeam)

相关问题 更多 >