假设我有一个名为Fish的类。现在,我要求用户输入鱼的名称和大小。现在,如何按照大小属性(按递减顺序)和名称属性(按字母顺序)对这些输入值进行排序?
class Fish:
def __init__(self, size, name):
self.size:int = int(size)
self.name:str = name
pass
def main():
t = input()例如,用户输入以下内容:
d 3
a 1
c 2
b 1排序之后,应该是:(它首先按大小排序,如果大小相同,则按名称排序)
d 3
c 2
a 1
b 1发布于 2022-11-22 16:24:10
为了重写或声明对象的排序,应重写比较运算符。您需要指定一个(=,!=)和一个(>,<)。
class Fish:
def __init__(self, size, name):
self.size = int(size)
self.name = name
def __eq__(self,other):
return self.size == other.size and self.name==other.name
def __gt__(self,other):
if self.size != other.size:
return self.size > other.size
else:
return self.name < other.name一个例子
f1 = Fish(1,"a")
f2 = Fish(3,'d')
f3 = Fish(2,'c')
f4 = Fish(1,'b')
fishes = [f1,f2,f3,f4]
for fish in sorted(fishes, reverse = True):
print(fish.name, fish.size)输出:
d 3
c 2
a 1
b 1https://stackoverflow.com/questions/74535681
复制相似问题