2016-11-30 6 views
1

私はこれを正しく説明することができます。私はそれに名前のリストを持っている辞書を持っています。私はまた別の名前のリストを持っています。私がしたいのは、名前がリストに記載されていればリスト内の名前を取り出して辞書に渡すことですが、は辞書にありません辞書には調査をするようにメッセージを表示したい。ここで私はこれまで持っているものです:私はこれを実行するとリストと辞書を比較し、結果に基づいてメッセージを出力する

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リストに一人一人の名前を印刷し、それが各1の後にあなたに感謝出力し、それはから行方不明の名前を見つけることができません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

問題文はこれまでにTrueに評価しません場合は、2番目のように、あなたは、favorite_languagesのアイテムだけを反復処理ということです:

はここにヒントがあります。

favorite_languages = {「ジェン」:「のpython」、「サラ」:

代わりに、あなたはfavorite_languagesのキーとpoll_takersの値の両方からだけで一意の値をとるセットを()を使用することができます " C」、 'エドワード': 'ルビー'、 'フィル': 'のpython'} poll_takers = [ 'ジェン'、 'グレッグ'、 'サラ'、 'アラン'、 'ボブ']

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!") 
関連する問題