我不确定如何让我的字典打印我想要的信息。 Python 3.1

时间:2011-06-20 00:45:34

标签: python hash dictionary

请保持温和,我对编程非常陌生,只有一本给我一些可怕方向的书(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])

2 个答案:

答案 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]))