#python #list #dictionary #for-loop #comparison
#python #Список #словарь #for-цикл #сравнение
Вопрос:
здесь очень новичок в python, и этот вопрос кажется похожим на несколько других, задаваемых здесь, но отличается другими способами.
Я хотел бы проверить, отображается ли строка из созданного мной списка в значениях ключей из созданного мной словаря. Я хотел бы использовать цикл for для печати одного сообщения для значений, соответствующих словарю и списку, и другого сообщения для значений, которые есть в списке, но не в словаре.
Например
class_mates = ['Peter','Susan','Jen','Jeff','Niel','Sharon','Adam']
respondents = {
'jeff':'python'
'susan':'ruby'
'niel':'c'
'peter':'python'
}
-
Я намеренно сделал респондентов строчными, потому что в идеале в ответе был бы какой-то способ использовать функцию, возможно, lower() , чтобы сделать значения нечувствительными к регистру.
-
Я хотел бы использовать цикл for, но я открыт для изучения лучшего способа. В идеале мой вывод был бы примерно таким,
Thanks for taking the poll Peter.
Thanks for taking the poll Susan.
Hello, Jen. Please take our programming language poll.
Thanks for taking the poll Jeff.
etc.
Я пытался
for name, language in respondents.items():
if name.lower() in respondents.keys() == name.lower() in class_mates:
print("nThanks for taking the poll",name.title())
else:
print("Hello,",name.title() ". Please take our programming language poll."
Всякий раз, когда я запускаю это, он просто печатает оператор else для каждого совпадения в респондентах.
Если кто-нибудь может просветить меня в том, что я делаю неправильно,
и указать мне правильное направление, я был бы очень благодарен.
Спасибо за любую помощь!
Ответ №1:
Я понял это. Я пытался выполнить итерацию по неправильному итерируемому, а также пытался проверить, были ли имена в нижнем регистре в class_mates, который всегда будет возвращать false .
Комментарии:
1. если проблема устранена, пожалуйста, закройте вопрос.