基本上,我想在列表中存储具有两个属性(名称,得分)的对象。从那里,我想在列表中找到得分最高的对象,并能够访问该对象的名称。因此,如果确定50个是列表中的最高分数,我将无法看到该分数属于“工资”。
这是我的起始代码,其中我使用设置的属性创建对象(用于测试)。
将对象存储在列表中就可以了,例如,我可以在for循环中访问单个属性(例如a_list中的i: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)存储在列表中。如果这样做,我将找不到访问该对象的名称属性的方法。
答案 0 :(得分:0)
尝试一下:
m = max(a_list, key=lambda s: s.score)
当找到最大值时,应该使用列表中每个对象的score属性作为关键。
答案 1 :(得分:0)
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)]