请保持温和,我对编程非常陌生,只有一本给我一些可怕方向的书(Head First Programming)。这是我在Python IDLE中的代码:
scores = {}
scores[8.45] = 'Zach'
scores[9.12] = 'Juan'
scores[8.31] = 'Aaron'
scores[8.05] = 'Aideen'
scores[8.65] = 'Johnny'
scores[7.81] = 'Stacey'
for key in scores.keys():
print(scores[key] + ' had a score of ' + scores[???])
该计划旨在打印一份包含参赛者姓名及其相应分数的清单,但我不知道我在做错了什么或者当时正确:/
编辑:谢谢你们。在您的帮助下,我将代码编辑为正常工作,如果您对此感兴趣,那就是:scores = {}
scores['Zach'] = 8.45
scores['Juan'] = 9.12
scores['Aaron'] = 8.31
scores['Aideen'] = 8.05
scores['Johnny'] = 8.65
scores['Stacey'] = 7.81
for key in scores.keys():
print(str(key), ' had a score of ' , scores[key])
答案 0 :(得分:4)
您可以使用{...}.items()
迭代器,如下所示:
for score,name in scores.items():
print('{name} had a score of {score}'.format(**locals()))
但是,您的字典顺序错误。例如,如果扎克和胡安的得分相同,则为9.10?然后,写scores[9.10]='Zach' scores[9.10]='Juan'
将覆盖扎克!键应该是名称。
你可以这样写:
scores['Zach'] = 8.45
scores['Juan'] = 8.45
...
为了记录,这是我从头开始的方式:
def parseScores(string):
scores = {}
for line in string.splitlines():
if line.strip():
name,score = line.strip().split()
scores[name] = float(score)
return scores
data = """
Zach 8.45
Juan 9.12
Aaron 2.2
Aideen 2.2
Johnny 2.2
Stacey 7.81
"""
scores = parseScores(data)
for name,score in scores.items():
print('{name} had a score of {score}'.format(**locals()))
答案 1 :(得分:2)
通常情况下,人们会将球员映射到分数,而不是相反。
scores = {'Zach': 8.45, 'Juan': 9.12, ...}
for player in scores:
print('{0} had a score of {1:0.2f}'.format(player, scores[player]))