2016-11-30 39 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列表的名稱,它打印謝謝各一個,但它不會找到丟失的名字列表並打印正確的消息。

我知道這是相當簡單的,但我已經嘗試了幾件事,不能得到它。有誰知道我錯過了什麼?

+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項目迭代,從而使第二if語句永遠不會評估爲True。

相反,你可以使用一組(),它來自於favorite_languages鍵和poll_takers值只需要唯一值:

favorite_languages = {「仁」:「蟒蛇」,「莎拉」:' C」, '愛德華': '紅寶石', '菲爾': '蟒'} 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!") 
相關問題