通过与其他对象属性进行比较,在对象列表中查找对象

时间:2013-08-17 08:51:10

标签: python list object compare

我想通过比较对象的特定属性来找到对象列表中的对象。

my_list = [obj("low",1), obj("mid",5), obj("high",10)]

要求是将这些对象与优先级值(即1,5和10)进行比较并返回对象。

我试图遍历列表,并将每个对象与优先级属性的下一个对象进行比较。但是我在比较列表中的对象时遇到错误。

任何人都可以帮我解决问题。

1 个答案:

答案 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)]