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

2024-09-28 22:33:24 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个未排序的对象列表,每个对象都有一个结束日期属性。在

该列表看起来就像[obj1,obj2,obj3,<;…>;],没有具体的顺序。在

最后我想列出一个如下所示的列表:

[[“5月5日星期六”,[obj3,obj5]],[“5月7日星期一”,[obj1,obj8,obj9]]。。。等等]

基本上只是一个列表列表,其中“key”是来自对象的日期,key的值是具有该日期的对象的列表。不用担心日期格式,这只是一个简单的日期时间操作。我知道用字典比较容易,但我需要以按键排序的列表结束,而使用字典不能做到这一点(至少在python2.6iirc中不是这样)

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


Tags: 对象keyltgt列表字典属性排序
3条回答

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

你说你知道怎么把它写在字典里。所以,把结果排序:

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

应该是O(n log n)

如果要操作日期类型,也可以为sorted提供排序方法。见sorting in python overview。在

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

相关问题 更多 >