如何访问列表中对象的特定属性,以及根据这些属性操作列表?

问题描述 投票:0回答:2

基本上,我想在列表中存储具有两个属性(名称,分数)的对象。从那里我想找到列表中得分最高的对象,并能够访问该对象的名称。因此,如果50被确定为列表中的最高分,我将无法看到这个分数属于“工资”。

这是我的起始代码,我用set属性创建对象(用于测试)。

将对象存储在列表中工作得很好,我可以访问for循环中的各个属性(例如,对于a in alist:print(i.score))。但是当谈到访问最高分并得到与该对象相关的名称时,我感到茫然。

class Scoreboard:
    def __init__(self, name, score):
        self.name = name
        self.score = int(score)


t1 = Scoreboard("wages", 50)
t2 = Scoreboard("todo", 15)
t3 = Scoreboard("invoice", 36)

a_list = []

a_list.append(t1)
a_list.append(t2)
a_list.append(t3)

我尝试使用max()但是返回错误,除非我只在列表中存储得分值(例如t1.score)。如果我这样做,我找不到访问该对象的name属性的方法。

python list object attributes
2个回答
0
投票

试试这个:

m = max(a_list, key=lambda s: s.score)

这应该使用列表中每个对象的score属性作为查找max时的键。


0
投票

Python无法知道记分板是什么,并且它应该使用.score属性来计算最大值或分钟数。在评论中,字典似乎更合适。如果你想继续上课,你需要让python给你name这个实例的scoremax(scores)等于[(t.name, t.score) for t in a_list if t.score == max(t.score for t in a_list)] >>[('wages', 50)] 。就像是:

qazxswpoi
© www.soinside.com 2019 - 2024. All rights reserved.