正在检查具有多个值的用户输入和字典键之间的匹配

2024-09-29 23:15:35 发布

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

如果我想检查checkPlayer函数中输入的参数是否与dict1中的某个键匹配,并返回整个对象或相应键的特定值,我该如何更改此代码?在

dict1 = {'Messi' : ('Argentina','Barcelona'), 'Ronaldo' : ('Portugal','Juventus'), 'Robben': ('Netherlands','Bayern')}

def checkPlayer(plyr):
    for x in dict1:
        if plyr == x:
           print(x)

checkPlayer('Messi')

我主要搞不懂为什么打印x会打印玩家的名字而不是整个对象。如果找到匹配的对象,我该如何打印整个对象,或者更具体地说,只是国籍或团队。不太清楚如何使用for循环访问字典中的索引,它不像列表那样直观:/

谢谢各位


Tags: 对象函数代码for参数argentinaportugaldict1
3条回答

您可以使用以下代码:

dict1 = {'Messi' : ('Argentina','Barcelona'), 'Ronaldo' : ('Portugal','Juventus'), 'Robben': ('Netherlands','Bayern')}

checkPlayer = 'Messi'
print (dict1.get(checkPlayer,'Player not found')) # 'Player not found' will be returned if checkPLayer is not in the dict1.keys()
#result  > ('Argentina', 'Barcelona')

你的目标是键:值 关键是“梅西” 值是“阿根廷”,“巴塞罗那” 但是,在print语句中,只打印object的名称将只返回不带值的键
要访问该值,可以使用get()或字典中对象的索引

要获得您想要的结果,请使用以下方法:

print plyr,':',dict1[plyr]

您正在遍历字典的键,并在找到时打印(这是播放器的名称)。要获取该键的值,可以使用^{}方法(如果在字典中找不到键,还可以指定默认值):

dict1 = {'Messi' : ('Argentina','Barcelona'), 'Ronaldo' : ('Portugal','Juventus'), 'Robben': ('Netherlands','Bayern')}

def checkPlayer(plyr):
    print(dict1.get(plyr))

checkPlayer('Messi')

输出

^{pr2}$

此外,要检查字典中是否有播放器名,您可以使用if plyr in dict1;您不需要遍历所有键。所以你的方法也可以是:

def checkPlayer(plyr):
    if plyr in dict1:
        print(plyr, dict1[plyr][1])

checkPlayer('Messi')

输出

Messi Barcelona

相关问题 更多 >

    热门问题