我想根據我的標準對對象列表進行排序。python排序功能
這裏是我的排序功能:
def sort_pots(self, pot1, pot2):
coeff1 = ((pot1.movable + pot1.convertible)/pot1.total)
coeff2 = ((pot2.movable + pot2.convertible)/pot2.total)
if coeff1 > coeff2:
return 1
elif coeff1 == coeff2:
return pot1.total - pot2.total
else:
return -1
我想什麼來實現的是:如果 COEFF1> COEFF2,POT1是POT2 之前如果COEFF1 == COEFF2中,具有最高總爲前 else(coeff2> coeff1),pot2在pot2之前
並且該功能似乎不起作用。我有一堆根據總數排序,但沒有相同的coeff。 I've(convertible,movable,total):0,0,1及以後的0,3,4以及31,228,1584然後1,0,1,
這裏是開始的定義pot1和pot2的類別:
class Potential:
def __init__(self,conf_opt):
self.conf_opt = conf_opt
self.total = 0
self.movable = 0
self.convertible = 0
謝謝。
我猜
return pot1.total - pot2.total
是一個錯誤,因爲你的函數應該只返回1,0或-1。 – 2009-11-16 15:05:05