Проверка соответствия между пользовательским вводом и словарным ключом с несколькими значениями - PullRequest
0 голосов
/ 29 ноября 2018

Если я хочу проверить, соответствует ли введенный параметр в функции 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, он не так интуитивно понятен, как списки: /

Спасибо, ребята

Ответы [ 3 ]

0 голосов
/ 29 ноября 2018

ваш объект является ключом: значение ключа - «Месси», значение - «Аргентина», «Барселона», однако в своем заявлении на печать, которое вы только напечатаете, имя объекта вернет ключ только без значения
чтобы получить доступ к значению, вы можете использовать get () или индекс объекта в вашем словаре

, чтобы получить желаемый результат, используйте это:

print plyr,':',dict1[plyr]
0 голосов
/ 29 ноября 2018

Вы можете использовать ниже код:

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')
0 голосов
/ 29 ноября 2018

Вы перебираете ключи словаря и печатаете ключ (имя игрока), если он был найден.Чтобы получить значение для этого ключа, вы можете использовать метод 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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...