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

Cis*_*zko 0 python

我有一个Process名为(类)的实例列表process_list.我正在努力寻找属性l_time大于0的最小值.这是我的类看起来的样子:

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
Run Code Online (Sandbox Code Playgroud)

我尝试过类似的东西:

current_process = min(i for i in process_list if i.l_time > 0)
Run Code Online (Sandbox Code Playgroud)

它给出了一个错误:

TypeError:'Process'和'Process'实例之间不支持'<'

我是否必须以__gt__某种方式编写函数或者有没有办法使用它lambda

Dan*_*ejo 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)
Run Code Online (Sandbox Code Playgroud)

产量

5
Run Code Online (Sandbox Code Playgroud)