如何对 Python 日期字符串列表进行排序?

如何对 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)
Python

输出

执行上述程序后,会生成以下输出结果−

The input list of date strings after sorting:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
Python

方法2:使用sort()函数

sort()方法会原地对原始列表进行排序。这意味着sort()方法会改变列表元素的顺序。

默认情况下,sort()方法使用小于号(<)来对列表条目进行排序,即按降序排列;换句话说,它将优先考虑较小的元素。

要按从最高到最低的顺序排序元素(即按升序排序),可以在sort()方法中使用reverse=True参数。

list.sort(reverse=True)
Python

算法(步骤)

执行所需任务的算法/步骤如下−

  • 创建一个变量来存储日期字符串的输入列表。

  • 创建一个接受输入列表作为参数的函数。

  • 使用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)
Python

输出

排序后的输入日期字符串列表:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
Python

我们输入了一个日期列表,然后编写了一个以列表元素(日期)作为参数的函数,然后将日期拆分为分别为月份和年份的单独元素并返回它。我们在给定列表上使用了sort()函数并将函数名称作为参数传递。结果sort()函数将函数应用于每个元素并相应地排序。

方法3:使用sorted()函数

sorted()函数返回给定迭代对象的排序列表。

您可以选择升序或降序。数字按数字顺序排列,而字符串按字母顺序排列。

语法

sortediterablekey = keyreverse = reverse
Python

参数

  • 可迭代 -它是一个序列。

  • 关键 -将执行以确定顺序的函数。默认值为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))
Python

输出

排序后的输入日期列表:
['10-2002', '4-2003', '04-2005', '06-2014', '08-2020', '12-2021']
Python

这与前一种方法相同,只是sorted()函数接受了输入列表和函数作为参数。在这种情况下,我们使用函数名作为关键因素,因为sorted()函数将每个日期拆分并基于其进行排序。

结论

我们在本文中学习了如何使用三种不同的方法对日期列表进行排序。我们还学习了如何使用split()函数将给定的日期分为月份和年份。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程

登录

注册