排序我有對象的名單列表:具有日期如何對象名單,名單由一個對象的屬性在Python
[
[obj1, obj2, obj3],
[obj4, obj5, obj6], ...
]
對象是一個實例(從Django的查詢集返回)。現在我想根據每個對象列表的最新日期排列列表(因爲每個列表可以有一個或多個對象,我想要獲取最新的日期作爲整個集合的表示)。
排序我有對象的名單列表:具有日期如何對象名單,名單由一個對象的屬性在Python
[
[obj1, obj2, obj3],
[obj4, obj5, obj6], ...
]
對象是一個實例(從Django的查詢集返回)。現在我想根據每個對象列表的最新日期排列列表(因爲每個列表可以有一個或多個對象,我想要獲取最新的日期作爲整個集合的表示)。
假設對象是dict
類型的並具有相當關鍵的命名日期:
sorted_list = sorted(l, key=lambda items: max(map(itemgetter('date'), items)))
與輸入生成一個完整的例子:
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)