the5fire

关注Python、Django、Vim、Linux、Web开发、团队管理和互联网--Life is short, we need Python.


python对列表中的字典按[key]时间排序

作者:the5fire | 标签:     | 发布:2012-10-10 11:18 p.m. | 阅读量: 33788, 31803
对一个列表中的字典进行按照时间进行排序,下面是实现代码:

#coding:utf-8
"""
author:the5fire
date:2012-10-10
function:
sort dict list by key
"""
import datetime

result_data = []
result_data.append({
'id': 2,
'create_time': '2012-10-8 11:09:22',
})
result_data.append({
'id': 3,
'create_time': '2012-10-10 11:09:22',
})
result_data.append({
'id': 1,
'create_time': '2012-10-1 11:09:22',
})


def cmp_datetime(a, b):
a_datetime = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S')
b_datetime = datetime.datetime.strptime(b, '%Y-%m-%d %H:%M:%S')

if a_datetime > b_datetime:
return -1
elif a_datetime < b_datetime:
return 1
else:
return 0

import operator
print 'before',result_data
result_data.sort(cmp=cmp_datetime, key=operator.itemgetter('create_time'))
print 'after',result_data


你可以想到更好的方案吗?


补充:
在翻看之前的一些面试题,发现其中有一个问题就是对列表中的字典按照某个key进行排序,题目是这样的:
对[{'a':1,'b':2},{'b':3,'a':5}]按a进行排序?
按照上面的解决方案很简单:
t = [{'a':1,'b':2},{'b':3,'a':5}]
t.sort(key=operator.itemgetter('b')) - from the5fire.com
----EOF-----

微信公众号:Python程序员杂谈


其他分类: