我希望我能正确解释这一点。我有一个字典,里面有一个名字列表。我还有一个列表与另一个名单列表。我想要做的是获取列表中的名称并将其传递到字典中,如果列表中提到了名称,但字典中的 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 :(得分:1)
问题在于:
for name, language in favorite_languages.items():
这只会对结果进行迭代,即那些已经进行了民意调查的名字。因此,您需要以某种方式迭代那些尚未获得结果的poll_takers
。
这里有一个提示:
>>> favorite_languages.keys() | poll_takers
{'Allan', 'Bob', 'Edward', 'Greg', 'Jen', 'Phil', 'Sarah'}
答案 1 :(得分:0)
问题是你只遍历favorite_languages中的项目,因此第二个if语句不会评估为True。
相反,您可以使用set(),它只接受favorite_languages中的键和poll_takers中的值中的唯一值:
favorite_languages = {' Jen':' python',' Sarah':' c',' Edward' :' Ruby',' Phil':' python'} poll_takers = [' Jen',' Greg',' Sarah',' 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!')
答案 2 :(得分: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!")