Python-在实例列表中找到大于0的最小值

时间:2018-12-17 12:15:49

标签: python

我有一个名为Process的{​​{1}}类实例的列表。我正在努力寻找属性process_list的最小值大于0。 这是我班的样子:

l_time

我尝试过类似的事情:

class Process:

    def __init__(self, id, a_time, p_time):
        self.id = id
        self.a_time = a_time
        self.p_time = p_time
        self.l_time = p_time
        self.w_time = 0
        self.ta_time = 0
        self.is_available = False

出现错误:

  

TypeError:“ Process”和“ Process”的实例之间不支持“ <”

我是否必须以某种方式编写一个current_process = min(i for i in process_list if i.l_time > 0) 函数,或者有一种方法可以使用__gt__来实现?

1 个答案:

答案 0 :(得分:7)

使用min的关键参数:

class Process:

    def __init__(self, id, a_time, p_time):
        self.id = id
        self.a_time = a_time
        self.p_time = p_time
        self.l_time = p_time
        self.w_time = 0
        self.ta_time = 0
        self.is_available = False

process_list = [Process(1, 10, 10), Process(1, 5, 5), Process(1, -5, -5)]
result = min((p for p in process_list if p.l_time > 0), key= lambda x: x.l_time)

print(result.l_time)

输出

5