2013-08-17 67 views
-1

我想通过比较对象与对象的特定属性来找到对象列表中的对象。通过与其他对象进行比较来查找对象列表中的对象属性

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

的要求是这些对象相对于该优先级值进行比较(即1,5 & 10),并返回该对象。

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

任何人都可以帮助我一个解决方案。

+0

你能告诉我们代码和例外吗? –

+2

目前还不清楚你在这里试图达到什么,顺便说一句。代码会有所帮助。 –

+0

特别不清楚的是:“要求将这些对象与优先级值(即1,5和10)进行比较并返回对象。”你是什​​么意思返回一个对象?返回值最高的对象?返回一个排序的对象列表? –

回答

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)] 
+0

抱歉张贴不明确的查询。我的要求是从对象的动态列表中获取对象,并且具有最高的优先级值。 所以这是通过比较每个对象与其他对象来找到正确的 – user964566

+1

所以'max'行回答你的问题? @ user964566 – GP89

相关问题