[英]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.