Python 将列表与字典进行比较并根据结果打印消息
我希望我能正确地解释这一点。我有一本字典,里面有一系列的名字。我还有一张名单,上面还有一张名单。我想做的是将列表中的姓名输入字典,如果列表中提到了姓名,但字典中没有提到姓名,我希望它打印一条消息,告诉此人进行调查。以下是我到目前为止的情况:Python 将列表与字典进行比较并根据结果打印消息,python,Python,我希望我能正确地解释这一点。我有一本字典,里面有一系列的名字。我还有一张名单,上面还有一张名单。我想做的是将列表中的姓名输入字典,如果列表中提到了姓名,但字典中没有提到姓名,我希望它打印一条消息,告诉此人进行调查。以下是我到目前为止的情况: favorite_languages = {'Jen': 'python', 'Sarah': 'c', 'Edward': 'Ruby', 'Phil': 'python'} poll_takers = ['Jen', 'Greg', 'Sarah', '
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!')
当我运行此程序时,它会打印“最喜爱的语言”列表中每个人的姓名,并在每个人之后打印“谢谢”,但它不会从投票人
列表中找到缺少的姓名,并打印正确的消息
我知道这很简单,但我试过一些方法,但都没有成功。有人知道我遗漏了什么吗?问题是:
for name, language in favorite_languages.items():
这只会对结果进行迭代,即已进行投票的姓名。因此,您需要以某种方式迭代那些还没有结果的投票人
这里有一个提示:
>>> favorite_languages.keys() | poll_takers
{'Allan', 'Bob', 'Edward', 'Greg', 'Jen', 'Phil', 'Sarah'}
问题是,您只需迭代最喜爱的_语言中的项,因此第二条if语句的计算结果永远不会为True
相反,您可以使用set()只从favorite_语言中的键和poll_takers中的值中获取唯一值:
最喜欢的语言={'Jen':'python','Sarah':'c','Edward':'Ruby','Phil':'python'}
投票人=['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!')
我可能会从投票人的角度来看待这一点:
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!")
@wim为您提供了一个很好的提示,因此正如他所告诉您的,只需使用集合,其中您有投票人的姓名
和您的最喜爱的语言的键
。我想我可以提供一个答案,但这似乎是一个任务,所以我会让你弄清楚。你的回答非常准确。我喜欢你没有解决他的家庭作业,但你的暗示足以让他自己做。