Мне нужно перечислить ключи в словаре, которые имеют одинаковое значение при вводе пользователем - PullRequest
1 голос
/ 23 марта 2020

Моя задача - попросить пользователя ввести данные (инструмент) и получить список всех музыкантов, которые играют на этом инструменте. Вот мой код:

q = input("What instrument do you need: ")

musician_lib = { "Nick Beggs": "Bass", 
                 "Geddy Lee": "Bass", 
                 "John Myung": "Bass",
                 "Steven Wilson": "Guitar",
                 "Neil Peart": "Drums", 
                 "John Petrucci": "Guitar",
                 "Mike Portnoy": "Drums",
                 "Kevin Moore": "Keyboards",
                 "Derek Sherinian": "Keyboards", 
                 "Jordan Rudess": "Keyboards",
                 "Neal Schon": "Guitar",
                 "Steve Perry": "Vox",
                 "Alex Lifeson": "Guitar",
                 "James Labrie": "Vox"
                 }
if q == musician_lib.value:
    print("You should call " + (musician_lib()))

Я пробовал различные итерации вызова значения или ключа, но получаю сообщение об ошибке: AttributeError: у объекта 'dict' нет атрибута 'value'

Чтобы было ясно, я хотел бы видеть вывод, похожий на этот:

Какой инструмент вам нужен: (пользовательский ввод) Бас

Вы должны позвонить: Ник Беггс Гедди Ли Джон Мен

1 Ответ

1 голос
/ 23 марта 2020

Словари в python на самом деле не имеют атрибута value, поэтому вы получаете AttributeError, однако они имеют метод values ​​() , который выдаст вам список значений в диктат Словари также поддерживают методы key () и items (), которые возвращают ключи в словаре и пары ключ-значение в словаре соответственно.

Оттуда я бы порекомендовал изучить список , чтобы получить ключи, соответствующие значению, указанному пользователем.

musicians = [key for key, value in musician_lib.items() if value == q]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...