如果我想检查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那样直观:/
谢谢大家
答案 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')