【问题标题】:Checking for match between user input and dictionary key with multiple values检查用户输入和具有多个值的字典键之间的匹配
【发布时间】:2018-11-29 05:01:37
【问题描述】:

如果我想检查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 循环访问字典中的索引,它不像列表那么直观:/

谢谢大家

【问题讨论】:

    标签: python list dictionary object set


    【解决方案1】:

    您正在遍历字典的键并打印 key(这是播放器的名称)(如果找到的话)。要获取该键的值,您可以使用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
    

    【讨论】:

    • 如何更改该代码以打印出键和值或仅打印特定值(例如'Barcelona)
    • @CosmicCat 打印播放器和元组第一个索引处的值(请参阅更新的答案)
    【解决方案2】:

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

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

    print plyr,':',dict1[plyr]
    

    【讨论】:

      【解决方案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')
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多