2016-11-30 2 views
1

Надеюсь, я могу это объяснить правильно. У меня есть словарь, в котором есть список имен. У меня также есть список с другим списком имен. То, что я хочу сделать, - это взять имена в списке и передать их в словарь, если имя указано в списке, но NOT в словаре Я хочу, чтобы он печатал сообщение, в котором рассказывал человеку о проведении опроса , Вот то, что я до сих пор:Сравнение списка со словарем и сообщения о печати по результатам

favorite_languages = {'Jen': 'python', 'Sarah': 'c', 'Edward': 'Ruby', 'Phil': 'python'} 
poll_takers = ['Jen', 'Greg', 'Sarah', 'Allan', 'Bob'] 


for name, language in favorite_languages.items(): 
    print(name.title() + "'s favorite language is " + language.title() + ".") 

    if name in favorite_languages: 
     print('Thank you for taking the poll!') 
    if name in poll_takers and not favorite_languages: 
     print('Please take our poll!') 

Когда я запускаю это печатает имя каждого человека в списке favorite_languages, и печатает спасибо после каждого из них, но это не будет найти недостающие имена из poll_takers и распечатать соответствующее сообщение.

Я знаю, что это довольно просто, но я пробовал пару вещей и не могу его получить. Кто-нибудь знает, что мне не хватает?

+0

@wim предоставил вам хороший намек, так как он говорит вам, просто используйте набор, в котором у вас есть имена 'poll_takers' и ключи вашего' favorite_language'. Я думаю, что могу дать ответ, но это похоже на задание, поэтому я дам вам понять это. – lmiguelvargasf

ответ

1

Вот вопрос:

for name, language in favorite_languages.items(): 

Это только перебирает результатов, то есть те имена, которые уже предприняли опрос. Поэтому вам нужно как-то перебрать poll_takers, у которых пока нет результатов.

Вот подсказка:

>>> favorite_languages.keys() | poll_takers 
{'Allan', 'Bob', 'Edward', 'Greg', 'Jen', 'Phil', 'Sarah'} 
+1

очень точный ответ. Мне нравится, что вы не решили его домашнюю работу, но вашего намека достаточно, чтобы позволить ему сделать это самостоятельно. – lmiguelvargasf

0

Проблема заключается в том, что вы перебирать только элементы в favorite_languages, так что второе, если заявление не будет когда-либо вычисляться True.

Вместо этого, вы можете использовать набор(), который принимает только уникальные значения из двух ключей в favorite_languages ​​и значения в poll_takers:

favorite_languages ​​= { «Джен»: «питона», «Сара»: ' с», 'Эдвард': 'Рубин', 'Фил': 'питон'} poll_takers = [ 'Jen', 'Greg', 'Сара', 'Allan', 'Bob']

for name in set(favorite_languages + poll_takers): 
    try: 
     language = favorite_languages[name] 
    except KeyError: 
     # This means the name isn't in your favorite_languages dictionary 
     print('Please take our poll!') 
     return 

    print(name.title() + "'s favorite language is " + language.title() + ".") 

    print('Thank you for taking the poll!') 
0

Я мог бы подойти к этому с конца poll_takers следующим образом:

favorite_languages = {'Jen': 'python', 'Sarah': 'c', 'Edward': 'Ruby', 'Phil': 'python'} 
poll_takers = ['Jen', 'Greg', 'Sarah', 'Allan', 'Bob'] 

for name in poll_takers: 
    if name in favorite_languages.keys(): 
     print(name + "'s favorite language is " + favorite_languages[name] + ".") 
     print("Thank you for taking the poll!") 
    else: 
     print(name + " does not have a favorite language.") 
     print("Please take our poll!") 
Смежные вопросы