繁体   English   中英

根据对象属性对列表中的对象进行排序/分类的最有效方法

[英]Most efficient way to sort/categories objects in list based on object attribute

我有一个未排序的对象列表,每个对象都有一个end_date属性。

列表看起来像[obj1,obj2,obj3,<...>],但没有特定的顺序。

我想得到一个看起来像这样的列表:

[[“” Saturday,May 5“,[obj3,obj5]],[”“ Monday,May 7”,[obj1,obj8,obj9]]等等]

基本上只是一个列表列表,其中“键”是对象的日期,该键的值是具有该日期的对象的列表。 不必担心日期格式,这只是一种简单的日期时间操作。 我知道使用字典相对容易,但是我需要以键排序的列表结尾,而字典则不能这样做(至少不是Python 2.6 IIRC)

最有效的方法是什么? 我一直在用一堆for循环来弄混一些解决方案,但是看来我做错了。

itertools.groupby(sorted(L, key=operator.attrgetter('end_date')),
  key=operator.attrgetter('end_date'))

您说您知道如何将它付诸实践。 因此,只需对结果进行排序:

d = ToDict(...)
sorted_values = sorted(((date,list) for date,list in d.iteritems()))

应该是O(n log n)

你可以提供一个排序方法, sorted为好,如果你想操纵你的日期类型。 请参阅python排序概述

将其放入字典中,然后使用l=list(dictionary.iteritems())获取列表,并使用l.sort()进行排序

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM