Skip to main content
 首页 » 编程设计

python之如何按类的特定属性排序

2025年05月04日18zhoujg

我有一个带有跟踪价格属性的模型。现在,我有一个特定型号的 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) 

参见 http://wiki.python.org/moin/HowTo/Sorting/了解更多。