如何排序 Python 日期字符串列表?
在本文中,我们将向您展示如何排序一个 Python 日期字符串列表。现在我们看到 3 种方法来完成此任务 -
现在我们看到 2 种方法来完成此任务 -
使用 sort() 和 lambda 函数
使用 sort() 函数
使用 sorted 函数
方法 1:使用 sort() 和 lambda 函数
算法(步骤)
以下是执行所需任务的算法/步骤 -
使用 import 关键字,从 datetime 模块导入 datetime(要使用日期和时间,Python 有一个名为 datetime 的模块)。
创建一个变量来存储输入的日期字符串列表
使用 sort() 函数 通过将参数作为 lambda 函数来对日期列表进行排序。在这里,在 lambda 函数中,我们使用 strptime() 函数(将字符串格式的时间戳格式化为日期时间对象)将每个日期转换为日期对象。
打印排序后的输入日期字符串列表。
示例
以下程序使用 datetime 模块返回输入日期字符串列表的排序列表 -
# importing datetime from datetime import datetime # input list of date strings inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021'] # sorting the input list by formatting each date using the strptime() function inputDateList.sort(key=lambda date: datetime.strptime(date, "%m-%Y")) # Printing the input list after sorting 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() 函数返回输入日期字符串列表的排序列表 -
# input list of date strings inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021'] # creating a function that accepts the input list as an argument def sortDates(datesList): # splitting the list of elements based on the '-' separator(as the date is separated by - symbol ex 06-2014) split_up = datesList.split('-') # returning the year, the month of input list elements # Here split_up[1] gives the year and split_up[0] gives month return split_up[1], split_up[0] # sorting the input list of date strings using the sort() function # here the key is the function name inputDateList.sort(key=sortDates) # Printing the input list after sorting 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']
我们以日期列表作为输入,然后编写了一个函数,该函数以列表元素作为参数(日期),然后将日期拆分为单独的元素月和年并返回它。我们在给定列表上使用了 sort() 函数并将函数名作为参数传递。结果 sort() 函数将函数应用于每个元素并相应地对其进行排序。
方法 3:使用 sorted() 函数
sorted() 函数返回给定可迭代对象的排序列表。
您可以选择升序或降序。数字按数字排序,而字符串按字母顺序排列。
语法
sorted(iterable, key=key, reverse=reverse)
参数
iterable - 它是一个序列。
key - 将执行以确定顺序的函数。默认值为 None。
reverse - 布尔表达式。True 按升序排序,False 按降序排序。默认值为 False。
算法(步骤)
使用 sorted() 函数,通过将列表、键作为函数名作为参数传递给它来对输入日期字符串列表进行排序,并打印输出
示例
以下程序使用 sorted 函数返回输入日期字符串列表的排序列表 -
inputDateList = ['06-2014', '08-2020', '4-2003', '04-2005', '10-2002', '12-2021'] def sortDates(datesList): # splitting the list of elements based on the '-' separator split_up = datesList.split('-') # returning the year, the month of input list elements # Here split_up[1] gives the year and split_up[0] gives month return split_up[1], split_up[0] print("The input list of date strings after sorting:\n") # sorting the input list of date strings using the sorted function # here the key is the function name print(sorted(inputDateList, key=sortDates))
输出
The input list of date strings after sorting: ['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
它与之前的方法相同,只是 sorted() 函数接受输入列表和函数作为参数。在这种情况下,我们将键用作函数名,因为 sorted() 函数获取每个日期,将其拆分,并根据它进行排序。
结论
在本文中,我们学习了如何使用三种不同的方法对日期列表进行排序。我们还学习了如何使用 split() 函数将给定日期划分为月和年。