如何对Python日期字符串列表进行排序?
在本文中,我们将展示如何对Python日期字符串列表进行排序。现在我们看到了3种方法来完成这个任务:
现在我们看到了2种方法来完成这个任务:
- 使用sort()和lambda函数
-
使用sort()函数
-
使用排序函数
方法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()函数接受输入列表和函数作为参数。在这种情况下,我们将key作为函数名使用,因为sorted()函数接受每个日期,将其拆分,并根据它对其进行排序。
结论
在本文中,我们学习了如何使用三种不同的方法对日期列表进行排序。我们还学会了如何使用split()函数将给定日期分成月份和年份。