按特定字段对不同值的列表进行排序

2024-06-17 08:17:17 发布

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

我有一份从电子表格上读到的不同类型的清单。你知道吗

>>>data
[1.0, u'1', u'COMPLETED', u'TONGUE', 30.0, 1.0, '2014/01/28 09:33:16', 30.0, 210.0, u'1 CW', 0.0, 2.0, 210.0, u'H1490']
[1.0, u'1', u'COMPLETED', u'TONGUE', 30.0, 1.0, '04/02/2014 09:14:36', 30.0, 230.0, u'2 CCW', 0.0, 7.0, 210.0, u'H990']
.......

我想按日期排序,即按第6个字段(data[1][6],data[2][6],等等…)排序。如何指示Python按字段6对列表进行排序?你知道吗


Tags: 类型列表data排序电子表格cwtongueccw
2条回答

使用sorted使用lambda作为键进行排序和dateutil

from dateutil import parser

sorted(data,key = lambda x:parser.parse(x[6]))

如果尚未安装dateutil:

pip install python-dateutil

如果要对列表进行适当排序并避免创建新列表:

data.sort(key=lambda x:parser.parse(x[6]))

如果日期是两种不同格式中的一种,您可以使用自己的函数:

def date_parse(x):
    date = None
    for form in ["%Y/%m/%d %H:%M:%S","%d/%m/%Y %H:%M:%S"]:
        try:
            date = datetime.strptime(x,form)
        except ValueError:
            pass
    return date

sorted(data,key = lambda x: date_parse(x[6]))

可以使用sorted并指定要按第6个字段排序。你知道吗

您可以使用dateutil.parser来解析日期:

import dateutil.parser
sorted(data, key=lambda x: dateutil.parser.parse(x[6]))

或者,如果您希望就地对数据进行排序并减少查找次数:

from dateutil.parser import parse
data.sort(key=lambda x: parse(x[6]))

相关问题 更多 >