对一个列表中的字典进行按照时间进行排序,下面是实现代码:
#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