按属性排序对象列表

时间:2009-05-16 10:53:44

标签: python

我正在尝试在python中对对象列表进行排序,但是这段代码不起作用:

import datetime

class Day:
    def __init__(self, date, text):
        self.date = date
        self.text = text

    def __cmp__(self, other):
        return cmp(self.date, other.date)

mylist = [Day(datetime.date(2009, 01, 02), "Jan 2"), Day(datetime.date(2009, 01, 01), "Jan 1")]
print mylist
print mylist.sort()

这个输出是:

[<__main__.Day instance at 0x519e0>, <__main__.Day instance at 0x51a08>]
None

有人能告诉我解决这个问题的好方法吗?为什么sort()函数返回None

2 个答案:

答案 0 :(得分:5)

mylist.sort()不返回任何内容,它会对列表进行排序。将其更改为

mylist.sort()
print mylist

查看正确的结果。

http://docs.python.org/library/stdtypes.html#mutable-sequence-types注7。

  

sort()和reverse()方法   为经济修改清单   排序或倒车时的空间   大名单。提醒你他们   由副作用操作,他们没有   返回已排序或反转的列表。

答案 1 :(得分:2)

请参阅sorted以获取将返回任何可迭代的已排序副本的函数。