使用字典时,int对象不可迭代

时间:2016-04-24 20:37:36

标签: python

我知道这是一个简单的错误,但一整天都在看着它!我在哪里添加float或int以防止出现以下错误消息? int对象不可言说。

我如何从最高分到最低分打印出来。我可以添加reverse = True吗?我收到了一个元组错误。 -

scores = {} #You'll need to use a dictionary to store your scores;

with open("classscores1.txt") as f:
    for line in f:
        name, score = line.split() #store the name and score separately (with scores converted to an integer)
        score = int(score)
        if name not in scores or scores[name] < score:
            scores[name] = score # replacing the score only if it is higher:

    for name in sorted(scores):
        print(name, "best score is", scores[name])
        print("{}'s best score is {}".format(name, max(scores[name])))

1 个答案:

答案 0 :(得分:1)

问题在于这一行:

print("{}'s best score is {}".format(name, max(scores[name])))

在这里,您尝试使用max scores[name],这只是一个整数。看一下代码,看起来你已经把这个值作为最大值,所以你可以把那一行改成

print("{}'s best score is {}".format(name, scores[name]))

与上面的print声明一样。 (另外,由于这两行print行将打印相同的内容,您可以删除其中一行。)

要从最高分到最低分打印,请将for循环更改为以下内容:

for name in sorted(scores, key=scores.get, reverse=True):
    ...

这使用scores函数作为键对scores.get中的名称进行排序,即按字典中的值排序,reverse=True使其从最高到最低排序。< / p>