如何遍历字典?



我目前正在研究字典循环和Python循环。在这本词典里,人们对他们最喜欢的语言进行了投票,并得出了投票结果。参与者名单显示了必须参加的人;

我想循环遍历Participants列表,如果他们在字典中,则打印他们已完成投票,打印他们的名字,并打印他们最喜欢的语言。如果没有,它打印他们需要完成投票,后面跟着他们的名字。

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)

首先,使用大写字母开始变量名是不好的做法。这些都应该改变;例如:Participants应该是participants

问题出在这一行:

if participant, language in poll.items():

这会导致SyntaxError。您可能想要检查poll是否有participant的条目,如下所示:

if participant in poll:
print("Poll completed, " + participant + '.' +
'Favorite language: ' + poll[participant])

以上代码将检查participant是否为poll中的有效密钥(换句话说,poll是否包含参与者的条目)。如果是,它将列出pollparticipant条目作为语言。

正如评论中提到的,在这些情况下,通常更倾向于使用try-except语句而不是if-else语句(参见这篇博客文章),如下所示:

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

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

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

您不能比较语言是否在Poll.items()中—这是您从Poll中提取的东西。你需要更多地练习变量是如何工作的。相反,你只问这个人是否在Poll;如果是,则提取语言:

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

也许您只需要看一下dictionarys https://docs.python.org/3/tutorial/datastructures.html的文档。你的代码不可能知道你的语言是什么意思。字典是键/值对。

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)

相关内容

  • 没有找到相关文章

最新更新