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

时间:2018-11-29 05:01:38

标签: python list dictionary object set

如果我想检查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会打印玩家名称而不是整个对象感到困惑。如果找到匹配项,我将如何打印整个对象,或更具体地说, just 国籍或球队。不太确定如何使用for循环访问字典中的索引,它不像list那样直观:/

谢谢大家

3 个答案:

答案 0 :(得分:2)

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

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

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

checkPlayer('Messi')

输出

('Argentina', 'Barcelona')

此外,要检查词典中是否有玩家名称,您只需输入if plyr in dict1;您不需要遍历所有键。因此,您的方法也可以是:

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

checkPlayer('Messi')

输出

Messi Barcelona

答案 1 :(得分:1)

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

要获得您想要的结果,请使用此:

print plyr,':',dict1[plyr]

答案 2 :(得分:0)

您可以使用以下代码:

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