我有一个带有跟踪价格属性的模型。现在,我有一个特定型号的 list 。无论如何要重新排列列表以按该特定属性排序? python 是否足够聪明,知道该属性是一个可以排序的值?我没有使用数据库跟踪特定模型的实例(我正在做的事情不需要它,所以我不能只按排序顺序从数据库中检索实例) 谢谢!
请您参考如下方法:
您可以使用内置的 sorted 函数,以及返回对象价格的自定义函数:
class Dummy(object) :
pass
def getPrice(obj) :
return obj.price
d0 = Dummy()
d0.price = 56.
d1 = Dummy()
d1.price=16.
d2 = Dummy()
d2.price=786.
d3 = Dummy()
d3.price=5.5
elements = [d0, d1, d2, d3]
print 'Pre-sorting:'
for elem in elements :
print elem.price
sortedElements = sorted(elements, key=getPrice)
print 'Post-sorting:'
for elem in sortedElements :
print elem.price
这也可以通过您类中返回价格的任何方法来工作,例如
class Dummy(object) :
def __init__(self, price) :
self._price = price
def getPrice(self) :
return self._price
...
sortedElements = sorted(elements, key = Dummy.getPrice)
