python - 将日期包含为字符串的排序列表
问题描述
我有以下列表
data = ['Sep 14, 2020', 'Sep 10, 2020', 'Sep 6, 2020', 'Aug 28, 2020',
'Aug 25, 2020', 'Aug 31, 2020', 'Aug 30, 2020', 'Aug 17, 2020',
'Nov 12, 2020', 'Dec 3, 2020', 'Dec 17, 2020', 'Dec 28, 2020', 'Dec 31, 2020']
如果元素中的日期将该元素设置在另一个元素之后,我已经尝试循环和匹配,但我无法让它工作
我想从一月的第一个月到十二月的上个月对列表进行排序,但我什至不知道从哪里开始
解决方案
中的元素data
是字符串,因此如果您sort
在列表上运行,它将按字母顺序排序。
sort
考虑到它们是日期,您可以告诉函数对它们进行排序。为此,您需要datetime.strptime
像这样转换它们(在此处datetime.strptime(element, '%b %d, %Y')
阅读更多信息)strptime
所以你的排序功能变成:
data = ['Sep 14, 2020', 'Sep 10, 2020', 'Sep 6, 2020', 'Aug 28, 2020', 'Aug 25, 2020', 'Aug 31, 2020', 'Aug 30, 2020', 'Aug 17, 2020', 'Nov 12, 2020', 'Dec 3, 2020', 'Dec 17, 2020', 'Dec 28, 2020', 'Dec 31, 2020']
data.sort(key=lambda date: datetime.strptime(date, '%b %d, %Y'))
print(data)
输出:
['Aug 17, 2020', 'Aug 25, 2020', 'Aug 28, 2020', 'Aug 30, 2020', 'Aug 31, 2020', 'Sep 6, 2020', 'Sep 10, 2020', 'Sep 14, 2020', 'Nov 12, 2020', 'Dec 3, 2020', 'Dec 17, 2020', 'Dec 28, 2020', 'Dec 31, 2020']
推荐阅读
- python - 将 PostGIS 查询转换为 Django QuerySet (geoDjango postgis)
- python-asyncio - get_event_loop() 调用的开销
- oracle - 当 memory_max_target = memory_target =0 时 Oracle 12c AMM 被禁用
- c# - 如何从 WPF DataGrid 中的单独表中显示某些列?
- python - 如何为特定页面设置页面大小
- python - Python - Kivy:在 RecycleView 中垂直滚动不能使用向上/向下箭头键
- json - 纽约时间 API 的正确 URL
- kubernetes - Kubernetes手表的正确使用方法
- html-email - gmail中的电子邮件签名将图像显示为附件
- oracle - 具有不同值的报告区域上的 oracle apex 工具提示