Python 如何循环浏览字典?

Python 如何循环浏览字典?,python,dictionary,conditional-statements,Python,Dictionary,Conditional Statements,我目前正在研究通过字典和Python循环。字典里有对他们最喜欢的语言和结果进行民意调查的人。参与者列表显示必须参加的人员;一些人服用了,而其他人没有服用 我想循环查看参与者列表,如果他们在字典中,它会打印出他们已经完成了投票,打印出他们的名字,并打印出他们最喜欢的语言。如果没有,它会打印出他们需要完成投票,然后是他们的名字 Poll = { 'Jen': 'Python', 'James': 'C++', 'John': 'Java', } Participants = ['Jade', 'J

我目前正在研究通过字典和Python循环。字典里有对他们最喜欢的语言和结果进行民意调查的人。参与者列表显示必须参加的人员;一些人服用了,而其他人没有服用

我想循环查看参与者列表,如果他们在字典中,它会打印出他们已经完成了投票,打印出他们的名字,并打印出他们最喜欢的语言。如果没有,它会打印出他们需要完成投票,然后是他们的名字

Poll = {
'Jen': 'Python',
'James': 'C++',
'John': 'Java',
}

Participants = ['Jade', 'Jen', 'James', 'Josh', 'John']

for Participant in Participants:
    if Participant, Language in Poll.items():
        print("Poll completed, " + Participant + '.' +
        'Favorite language: ' + Language)
    else:
        print('Please complete the poll, ' + Participant)

首先,使用大写字母开始变量名是一种不好的做法。这些都应该改变;e、 g.
参与者
应该是
参与者

问题在于这一行:

if participant, language in poll.items():
这会导致语法错误。您可能想检查
poll
是否有
participant
的条目,如下所示:

if participant in poll:
    print("Poll completed, " + participant + '.' +
    'Favorite language: ' + poll[participant])
try:
    print("Poll completed, " + participant + '.' +
    'Favorite language: ' + poll[participant])
except KeyError:
    print('Please complete the poll, ' + participant)
上述代码将检查
参与者
是否是
投票
中的有效键(换句话说,如果
投票
包含参与者的条目)。如果是这样,它将列出
poll
参与者的条目作为语言

如评论中所述,在这些情况下,通常倾向于使用
try-except
语句,而不是
if-else
语句(请参阅),例如:

if participant in poll:
    print("Poll completed, " + participant + '.' +
    'Favorite language: ' + poll[participant])
try:
    print("Poll completed, " + participant + '.' +
    'Favorite language: ' + poll[participant])
except KeyError:
    print('Please complete the poll, ' + participant)

这就完成了同样的事情;如果
poll[participant]
不存在(意味着参与者在
poll
中没有条目),将执行
except
语句,打印参与者未完成投票。否则将运行
try
语句,输出参与者确实完成了投票。

也许您只需查看字典文档即可。您的代码无法理解您对语言的含义。字典是键/键对

Poll = {
        'Jen': 'Python',
        'James': 'C++',
        'John': 'Java',
    }

Participants = ['Jade', 'Jen', 'James', 'Josh', 'John']

for Participant in Participants:
    if Participant in Poll:
        print("Poll completed, " + Participant + '.' +
              'Favorite language: ' + Poll[Participant])
    else:
        print('Please complete the poll, ' + Participant)

我知道你想要什么:你的逻辑几乎是正确的,但你还没有学会如何访问dict特征。。。但你很接近

无法比较语言是否在Poll.items()中--这是从
Poll
中提取的内容。你需要更多的练习变量是如何工作的。相反,您只询问此人是否在
投票中
;如果是,则提取语言:

for Participant in Participants:
    if Participant in Poll:
        print("Poll completed, " + Participant + '.' +
        'Favorite language: ' + Poll[Participant])
    else:
        print('Please complete the poll, ' + Participant)

你还没有告诉我们你有什么问题。“请帮帮我”不是堆栈溢出问题。您的
if
条件明显不正确;请先纠正一下。@Prune可能更友好一点?他们说他们是新来的。所以我们都有了一个学习曲线through@h.and.h:在我看来,成为一个新手也不是一个很好的借口。一个更具python风格的方法是使用
try:{}
,除了KeyError:
。非常有帮助而且容易理解。感谢您提及大写的变量!很高兴能帮上忙!