如何按从低到高的顺序比较类



如何在以下代码中根据薪酬对不同员工进行比较:

import random
class employee:
def __init__(self, pay, age):
self.pay = pay
self.age = age

employee_num = 0 
for i in range(5):

employee_num = employee(random.randint(20000, 50000),random.randint(18, 59))
#create different employee numbers and make the pay and age of these employee_num random


# compairing different employee numbers on base of pay in order from least to most
print('printing highest earner employee number here')

#delete all employee classes here

或者我可以用这些数据列出一个列表来更容易地访问它吗?

import random

class Employee: # Convention capitalize class names
def __init__(self, pay, age):
self.pay = pay
self.age = age

employees = []
for i in range(5):
employees.append( Employee(random.randint(20000, 50000),
random.randint(18, 59)))
# create different employee numbers and make the pay and age of these
# employee_num random
# compairing different employee numbers on base of pay in order from least to most
print('printing highest earner employee number here')
for person in employees:
print(person.pay)
print('Now process from least to most pay.')
# Mutate the employees list ordered by lowest of highest pay.
employees.sort(key=lambda employee: employee.pay)
for person in employees:
print(person.pay)

# delete all employee classes here

输出

printing highest earner employee number here
28717
48714
25406
33588
23827
Now process from least to most pay.
23827
25406
28717
33588
48714

您要分配employee_num5次。这是什么意思
要根据订单对列表进行排序,您可以执行以下操作:

employee_list = [employee(random.randint(20000, 50000), random.randint(18, 59)) for i in range(5)]
employee_list.sort(key=lambda e: e.pay) #this will sort the list with the employee.pay ascending

或者您可以覆盖类的关系运算符并使用它们:

class employee:
def __init__(self, pay, age):
self.pay = pay
self.age = age
def __gt__(self, a):
return self.pay > a.pay
def __lt__(self, a):
return self.pay < a.pay
...
employee_list.sort()

最新更新