将列表与字典进行比较并根据结果打印消息

时间:2016-11-30 22:39:49

标签: python

我希望我能正确解释这一点。我有一个字典,里面有一个名字列表。我还有一个列表与另一个名单列表。我想要做的是获取列表中的名称并将其传递到字典中,如果列表中提到了名称,但字典中的 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列表中找到缺少的名称并打印正确的消息

我知道这很简单,但我已经尝试了几件事而且无法得到它。有谁知道我错过了什么?

3 个答案:

答案 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!")
相关问题