我正在嘗試制作對用戶輸入的產品進行排序的程式,并且我正在嘗試實作對字串升序(名稱)和整數降序(代碼)進行排序,有什么建議嗎?
class Product:
def __init__(self, name, code):
self.name = name
self.code = code
def insertion_sort(arr):
for i in range(1, len(arr)):
z = arr[i]
j = i-1
while j >= 0 and z < arr[j]:
arr[j 1] = arr[j]
j -= 1
arr[j 1] = z
return arr
l = []
p1 = Product('Product1', 2222888)
p2 = Product('NewProduct', 123333)
p3 = Product('Product', 9999999)
p4 = Product('Product1', 2222887)
p5 = Product('TestProduct', 6281732)
l.append([p1.name, p1.code])
l.append([p2.name, p2.code])
l.append([p3.name, p3.code])
l.append([p4.name, p4.code])
l.append([p5.name, p5.code])
print(insertion_sort(l))
uj5u.com熱心網友回復:
您可以使用為此目的排序的 python 函式
您需要提供用于排序的密鑰
這是更新的代碼。
class Product:
def __init__(self, name, code):
self.name = name
self.code = code
l = []
p1 = Product('Product1', 2222888)
p2 = Product('NewProduct', 123333)
p3 = Product('Product', 9999999)
p4 = Product('Product1', 2222887)
p5 = Product('TestProduct', 6281732)
srted = sorted([p1, p2, p3, p4, p5], key=lambda x: (x.name, -x.code))
print([(i.name, i.code) for i in srted])
key 函式回傳x.name和的元組-x.code。
因此,當x.name兩個物件的相同時,它會檢查-x.code哪個是否為負,因此product物件將以具有相同的后代方式排序x.name
轉載請註明出處,本文鏈接:https://www.uj5u.com/qianduan/437148.html
