首页 > 解决方案 > 按具体日期排序?数字?列表中包含的列表

问题描述

我正在做一些学习工作,并陷入了一些问题!

我有这个日程表

lists = [['Lunch', '2021-04-05 12:00', '2021-04-05 13:00'], ['Dinner', '2021-04-05 13:00', '2021-04-05 14:00'], ['Lunch', '2021-04-04 13:00', '2021-04-04 14:00']]

而且,我想按列表 [1] 的开始日期对这个列表进行排序

我试图做的是下面

lists = [['Lunch', '2021-04-05 12:00', '2021-04-05 13:00'], ['Dinner', '2021-04-05 13:00', '2021-04-05 14:00'], ['감자', '2021-04-04 13:00', '2021-04-04 14:00']]
sorted_lists = []
for i in lists:
    i[1] = i[1].replace('-', '').replace(' ', '').replace(':', '')
    i[2] = i[1].replace('-', '').replace(' ', '').replace(':', '')
    sorted_lists.append(i)
    
sorted(sorted_lists, key=lambda date: date[1])

print(sorted_lists)

注意,我不想使用任何模块,例如日期、时间

但是,它会切换每个项目的位置。

有没有按开始日期排序的最佳方法?

谢谢你。

如果我的解释不好,请告诉我..!

谢谢大家阅读

标签: pythonlistsortingreplaceflatten

解决方案


如果您的日期如您所见(即,它们的词汇顺序与时间顺序一致),那么为什么不简单地:

sorted(lists, key=lambda e: e[1])

对于您提供的数据,这给出了:

[['Lunch', '2021-04-04 13:00', '2021-04-04 14:00'],
 ['Lunch', '2021-04-05 12:00', '2021-04-05 13:00'],
 ['Dinner', '2021-04-05 13:00', '2021-04-05 14:00']]

澄清:我总是尽量避免在我的回答中出现副作用。这意味着我提供的代码通常会创建新值并且不会影响现有变量,除非得到适当说明。我认为这些副作用具有潜在危险,除非有非常明确的记录。想象一个你调用的函数偷偷地修改你的列表或你的DataFrame......

因此,上面的答案应该分配给选择的结果变量。我看到你使用sorted_lists,所以:

sorted_lists = sorted(lists, key=lambda e: e[1])

推荐阅读