如何按对象对对象列表进行排序';python中的s属性

如何按对象对对象列表进行排序';python中的s属性,python,django,Python,Django,我有一个对象列表: [ [obj1, obj2, obj3], [obj4, obj5, obj6], ... ] 对象是具有日期的实例(从django的queryset返回)。现在,我想根据每个对象列表的最新日期对outter列表进行排序(因为每个列表可以有一个或多个对象,所以我想获得最新的日期作为整个集合的表示形式)。假设对象的类型为dict,并且具有一个名为date的可比较键: 输入生成的完整示例: from datetime import datetime from operator

我有一个对象列表:

[
[obj1, obj2, obj3],
[obj4, obj5, obj6], ...
]

对象是具有日期的实例(从django的queryset返回)。现在,我想根据每个对象列表的最新日期对outter列表进行排序(因为每个列表可以有一个或多个对象,所以我想获得最新的日期作为整个集合的表示形式)。

假设对象的类型为
dict
,并且具有一个名为date的可比较键:

输入生成的完整示例:

from datetime import datetime
from operator import itemgetter

N = 3
M = 4

l = []
for i in range(N):
    l.append([])
    for j in range(M):
        l[-1].append({'date': datetime.now()})

sorted_list = sorted(l, key=lambda items: max(map(itemgetter('date'), items)))
如果我们设置
M=N=2
,这将导致:

[
   [{'date': datetime.datetime(2017, 2, 28, 13, 14, 15, 172018)}, 
    {'date': datetime.datetime(2017, 2, 28, 13, 14, 15, 172052)}],

   [{'date': datetime.datetime(2017, 2, 28, 13, 14, 15, 172062)},
    {'date': datetime.datetime(2017, 2, 28, 13, 14, 15, 172068)}]
]
课堂元 使用安替比妥 比如说

class News(models.Model):
     news_titles = models.CharField(max_length=200, unique=True)
     news_preview = models.CharField(max_length=200, , unique=True)
     news_icon = FileBrowseField(u'News icon', max_length=200, directory="IconImages/",
                                     extensions=[".jpg", ".jpeg", ".png", ".gif"],
                                     blank=True,null=True)
     enabled = models.BooleanField(default=1)
     news_pub_time =  models.DateTimeField(_("Published from"),
         help_text=_("With Published chosen, won't be shown until this time"),
         blank=True, null=True, db_index=True)
     news_full_text = models.TextField(max_length=10000,verbose_name=u'Full text')

     def __unicode__(self):
         return self.news_titles

     class Meta:
         ordering = ["-news_pub_time"]
         verbose_name = u'News'

假设每个对象都有一个
date
属性,该属性的类型为
datetime.date

def sort_by_date(object_lists):
    def max_date(objects):
        return max(objects, key=lambda obj : obj.date ).date
    return sorted(object_lists, key=max_date, reverse=True)
def sort_by_date(object_lists):
    def max_date(objects):
        return max(objects, key=lambda obj : obj.date ).date
    return sorted(object_lists, key=max_date, reverse=True)