我正在学习如何使用Classes,到目前为止我已经实现了以下目标:
class customer:
def __init__ (self, name, ID, money):
self.name = name
self.ID = ID
self.money = money
def deposit(self, amount):
self.money = self.money+amount
def withdraw(self, amount):
self.money = self.money-amount
mike = customer('Mike', 1343, 1884883)
john = customer('John', 1343, 884839)
steve = customer('Steve', 1343, 99493)
adam = customer('Adam', 1343, 10000)
我想创建一个按客户所用金额对客户进行分类的功能,但我不确定如何这样做。
答案 0 :(得分:3)
您可以按照以下属性对对象列表进行排序:
your_list.sort(key=lambda x: x.attribute_name, reverse=True)
如果您设置reverse=False
,则列表会按升序排序,reverse=True
会从最高位到最低位排序。
所以在你的情况下:
class customer:
def __init__ (self, name, ID, money):
self.name = name
self.ID = ID
self.money = money
def deposit(self, amount):
self.money = self.money+amount
def withdraw(self, amount):
self.money = self.money-amount
mike = customer('Mike', 1343, 1884883)
john = customer('John', 1343, 884839)
steve = customer('Steve', 1343, 99493)
adam = customer('Adam', 1343, 10000)
unsorted_list = [steve, adam, mike, john]
print [c.name for c in unsorted_list]
unsorted_list.sort(key=lambda c: c.money, reverse=True)
print [c.name for c in unsorted_list]
答案 1 :(得分:-1)
def sort_by_money(customer)
for index in range(1,len(customer)):
currentvalue = customer[index].money
position = index
while position>0 and customer[position-1].money > currentvalue:
alist[position]=alist[position-1]
position = position-1
customer[position]=customer
简单的插入排序,它接收客户数组并根据资金对其进行排序。
此代码将位于客户类之外,将客户数组作为输入。
这个问题可以有很多正确答案。书面插入排序正确解释。