我想通过比较对象相对于对象的特定属性来在对象列表中找到一个对象。
my_list = [obj("low",1), obj("mid",5), obj("high",10)]
要求是比较这些对象的优先级值(即 1、5 和 10)并返回对象。
我试图遍历列表并将每个对象与下一个对象的优先级属性进行比较。但是我在比较列表中的对象时遇到错误。
任何人都可以帮助我解决问题。
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)]