在具有类的列表上使用python Sorted函数

时间:2014-05-28 11:59:15

标签: python list sorting

我目前正在尝试使用内置函数Sorted来对具有名为score的类属性的列表进行排序。

这里排序的函数只与列表一起使用,它按正确的顺序对分数进行排序。

Scores = [1,5,19,0,900,81,9000]


print(sorted(Scores))

但是当我尝试将此函数应用于具有class属性的列表时,会返回错误: AttributeError:' list'对象没有属性'得分'

这是我的代码:

print(sorted(RecentScores.Score))

非常感谢任何帮助。

下面是我的类初始化和列表RecentScores

class TRecentScore():
  def __init__(self):
    self.Name = ''
    self.Score = 0

RecentScores = [1,5,0]

3 个答案:

答案 0 :(得分:5)

你没有在课堂上使用你正在做的事情只是声明一个包含一些数字的列表,然后你试图在该列表对象上调用属性Score

class TRecentScore():
    def __init__(self, name, scores):
        self.name = name
        self.scores = scores

recent_scores = TRecentScore('Sorted Scores', [1,5,0])
print(sorted(recent_scores.scores))

答案 1 :(得分:2)

在课程定义中,您必须先将__init__中的名称和分数视为输入,如下所示:

class TRecentScore():
    def __init__(self, Name, Score):
        self.Name = Name
        self.Score = Score

然后只有在课堂上分配名称和分数才有意义。 接下来,必须实例化类RecentScores的{​​{1}}实例,将名称和分数作为初始化的参数传递。这可以如下所示完成:

TRecentScore

这将打印出已排序的分数。希望这有帮助!

答案 2 :(得分:1)

如果您总是希望对分数列表进行排序,则可以使用sorted创建新列表对列表进行排序:

class TRecentScore():
    def __init__(self, name, score):
        self.Name = name
        self.score = score
        self.score.sort()

RecentScores = TRecentScore("score list", [1,5,19,0,900,81,9000])
print (RecentScores.score)
[0, 1, 5, 19, 81, 900, 9000]