Python:按mm/dd/yyyy日期对JSON列表进行排序

2024-05-23 19:19:27 发布

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

我有一个类似MongoDB游标的数据转储示例:

>>> json_list
[{u'rDate': u'05/04/2009', u'_id': ObjectId('56c20bf2dc5e3753986b5564')},
{u'rDate': u'06/09/2009', u'_id': ObjectId('56c20be5dc5e3753986b5563')},
{u'rDate': u'12/08/2008', u'_id': ObjectId('56c20bf2dc5e3753986b5566')},
{u'rDate': u'12/21/2008', u'_id': ObjectId('56c20bf2dc5e3753986b5565')}]

Python中有没有一种方法可以按照日期的递增顺序对它们进行排序?将示例排序到列表中:

^{pr2}$

我已经看过大多数相关的示例,但是它们的日期格式类似于"update_time": "1415387875",这不是我的情况。欢迎任何帮助。在

谢谢!在


Tags: 数据方法idjson示例列表排序顺序
2条回答

你把日期弄错了2014年2月31日(2月31日)。这是不可能的

你可以这样对日期进行排序:

from datetime import datetime

json_list = [{'id' : 5461, 'date': '02/14/2009'},
             {'id' : 5217, 'date': '09/25/2002'},
             {'id' : 5913, 'date': '02/28/2014'},
             {'id' : 5132, 'date': '01/07/2005'}]

sorted_date = sorted(json_list, key=lambda x: datetime.strptime(x['date'], '%m/%d/%Y'))
print sorted_date

假设日期是一个字符串并且总是有效的日期,那么您可以使用strptime()。你可以这样做:

json_list_sorted = sorted(json_list, key=lambda r: date.strptime(r["date"], "%m/%d/%Y"))

如果您有一个无效的日期,并且您仍然想尝试理解它,那么这是正则表达式的工作。首先尝试将日期转换为ISO格式,其字典顺序(主要)与日期顺序相匹配(regex未经测试,但应该给出大致的想法):

^{pr2}$

但是你应该尝试修复你的数据源,它不应该输出无效的日期。垃圾进来,垃圾出去。在

相关问题 更多 >