如何访问列表中对象的特定属性,以及基于这些属性操纵列表?

2024-07-07 09:03:18 发布

您现在位置:Python中文网/ 问答频道 /正文

基本上,我想在一个列表中存储具有两个属性(name,score)的对象。从那里我想找到列表中得分最高的对象,并能够访问该对象的名称。所以,如果50分被确定为榜单中的最高分,我就看不出这个分数属于“工资”

这是我的开始代码,在这里我创建了具有set属性的对象(用于测试)

将对象存储在列表中工作得很好,例如,我可以访问for循环中的各个属性(对于I in a_list: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(),但如果不在列表中只存储score值(例如t1.score),则返回一个错误。如果这样做,我就找不到访问该对象的name属性的方法


Tags: 对象nameself名称列表属性分数list
2条回答

试试这个:

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

在查找最大值时,应该使用列表中每个对象的score属性作为键

Python无法知道Scoreboard是什么,它应该使用.score属性来计算max或mins。在评论中,词典似乎更合适。如果你想继续学习类,你需要让python给你实例的namescore等于max(scores)。比如:

[(t.name, t.score) for t in a_list if t.score == max(t.score for t in a_list)]
>>[('wages', 50)]

相关问题 更多 >