我有一个名为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__
来实现?
答案 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