我想通过比较对象的特定属性来找到对象列表中的对象。
my_list = [obj("low",1), obj("mid",5), obj("high",10)]
要求是将这些对象与优先级值(即1,5和10)进行比较并返回对象。
我试图遍历列表,并将每个对象与优先级属性的下一个对象进行比较。但是我在比较列表中的对象时遇到错误。
任何人都可以帮我解决问题。
答案 0 :(得分:1)
class Obj(object):
def __init__(self, title, priority):
self.title=title
self.priority=priority
def __repr__(self):
return "Obj(%r, %r)" % (self.title, self.priority)
my_list = [Obj("low", 1), Obj("mid", 5), Obj("high", 10)]
我不确定你想要做什么,但要获得最高和最低优先级的项目,你可以做到这一点。
>>> max(my_list, key=lambda obj: obj.priority)
Out[1]: Obj('high', 10)
>>> min(my_list, key=lambda obj: obj.priority)
Out[2]: Obj('low', 1)
您还可以过滤列表,并根据对象的属性创建一个新列表。
>>> [obj for obj in my_list if obj.priority > 3]
Out[3]: [Obj('mid', 5), Obj('high', 10)]