我不知道如何让我的字典打印出我想要的信息。Python 3.1版

2024-04-20 14:13:16 发布

您现在位置:Python中文网/ 问答频道 /正文

请温柔,我是一个非常新的编程,只有一本书,这是给我一些可怕的方向(头先编程)。下面是我在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])

Tags: key代码infor编程keysjuanprint
2条回答

可以使用{...}.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()))

通常情况下,一个会将玩家映射到分数,而不是相反。你知道吗

scores = {'Zach': 8.45, 'Juan': 9.12, ...}
for player in scores:
  print('{0} had a score of {1:0.2f}'.format(player, scores[player]))

相关问题 更多 >