基本上,我想在列表中存储具有两个属性(名称,分数)的对象。从那里我想找到列表中得分最高的对象,并能够访问该对象的名称。因此,如果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属性的方法。
试试这个:
m = max(a_list, key=lambda s: s.score)
这应该使用列表中每个对象的score属性作为查找max时的键。
Python无法知道记分板是什么,并且它应该使用.score
属性来计算最大值或分钟数。在评论中,字典似乎更合适。如果你想继续上课,你需要让python给你name
这个实例的score
,max(scores)
等于[(t.name, t.score) for t in a_list if t.score == max(t.score for t in a_list)]
>>[('wages', 50)]
。就像是:
qazxswpoi