如何对 Python 日期字符串列表进行排序?
在本文中,我们将展示如何对Python日期字符串列表进行排序。现在我们看到了三种方法来完成此任务−
现在我们看到了两种方法来完成此任务−
- 使用sort()和lambda函数
-
使用sort()函数
-
使用sorted函数
阅读更多:Python 教程
方法1:使用sort()和lambda函数
算法(步骤)
执行所需任务的算法/步骤如下−
- 使用import关键字从datetime模块中导入datetime(要使用日期和时间,Python有一个叫做datetime的模块)。
-
创建一个变量来存储日期字符串的输入列表。
-
使用sort()函数来对日期列表进行排序,并将lambda函数作为参数传递给它。在lambda函数中,我们使用strptime()函数将每个日期转换为日期对象(将字符串格式的时间戳格式化为日期时间对象)。
-
排序后,打印输入的日期字符串列表。
示例
###
下面的程序使用datetime模块返回输入日期字符串列表的排序列表−
# 导入datetime模块
from datetime import datetime
# 输入日期字符串的列表
inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021']
# 使用strptime()函数对输入列表进行排序
inputDateList.sort(key=lambda date: datetime.strptime(date, "%m-%Y"))
# 排序后打印输入列表
print("The input list of date strings after sorting:\n", inputDateList)
输出
执行上述程序后,会生成以下输出结果−
The input list of date strings after sorting:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
方法2:使用sort()函数
sort()方法会原地对原始列表进行排序。这意味着sort()方法会改变列表元素的顺序。
默认情况下,sort()方法使用小于号(<)来对列表条目进行排序,即按降序排列;换句话说,它将优先考虑较小的元素。
要按从最高到最低的顺序排序元素(即按升序排序),可以在sort()方法中使用reverse=True参数。
list.sort(reverse=True)
算法(步骤)
执行所需任务的算法/步骤如下−
- 创建一个变量来存储日期字符串的输入列表。
-
创建一个接受输入列表作为参数的函数。
-
使用split()函数(将字符串拆分为列表。我们可以定义分隔符。默认分隔符是任何空格),根据‘-’分隔符拆分元素列表。
-
使用sort()函数,通过将函数名作为参数的关键字来对输入日期字符串列表进行排序。
-
排序后,打印输入的日期字符串列表。
示例
以下程序使用sort()函数返回输入日期字符串列表的排序列表 −
#日期字符串的输入列表
inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021']
#创建一个接受输入列表作为参数的函数
def sortDates(datesList):
#根据“-”分隔符(因为日期是由-符号分隔的,例如06-2014)拆分元素列表
split_up = datesList.split('-')
#返回输入列表元素的年份和月份
#这里split_up [1]给出年份,split_up [0]给出月份
return split_up[1], split_up[0]
#使用sort()函数对日期字符串的输入列表进行排序
#这里的键是函数名称
inputDateList.sort(key=sortDates)
#排序后的输入列表的打印
print("排序后的输入日期字符串列表:\n", inputDateList)
输出
排序后的输入日期字符串列表:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
我们输入了一个日期列表,然后编写了一个以列表元素(日期)作为参数的函数,然后将日期拆分为分别为月份和年份的单独元素并返回它。我们在给定列表上使用了sort()函数并将函数名称作为参数传递。结果sort()函数将函数应用于每个元素并相应地排序。
方法3:使用sorted()函数
sorted()函数返回给定迭代对象的排序列表。
您可以选择升序或降序。数字按数字顺序排列,而字符串按字母顺序排列。
语法
sorted(iterable,key = key,reverse = reverse)
参数
- 可迭代 -它是一个序列。
-
关键 -将执行以确定顺序的函数。默认值为None。
-
反转 -布尔表达式。 True为按升序排序,False为按降序排序。默认值为False。
算法(步骤)
使用sorted函数将输入日期字符串列表排序,通过将列表,键作为函数名作为参数传递给它并打印输出
例子
以下程序使用sorted函数返回输入日期字符串列表的排序列表 −
inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021']
def sortDates(datesList):
# 根据"-"分隔符分割元素列表
split_up = datesList.split('-')
# 返回输入列表元素的年份和月份
# 这里split_up [1]给出年份,split_up [0]给出月份
return split_up[1], split_up[0]
print("排序后的输入日期列表:\n")
# 使用已排序函数对输入日期字符串的列表进行排序
# 这里的关键是函数名
print(sorted(inputDateList, key=sortDates))
输出
排序后的输入日期列表:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
这与前一种方法相同,只是sorted()函数接受了输入列表和函数作为参数。在这种情况下,我们使用函数名作为关键因素,因为sorted()函数将每个日期拆分并基于其进行排序。
结论
我们在本文中学习了如何使用三种不同的方法对日期列表进行排序。我们还学习了如何使用split()函数将给定的日期分为月份和年份。
极客教程