【问题标题】:Sort by specific date? numbers? included list in list按具体日期排序?数字?列表中包含的列表
【发布时间】:2021-07-03 21:15:45
【问题描述】:

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

我有这个日程表

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)

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

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

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

谢谢。

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

感谢大家的阅读

【问题讨论】:

  • sorted() 返回一个 new 排序列表;它不会更新原始列表。请改用sorted_lists.sort(key=...)

标签: python list sorting replace flatten


【解决方案1】:

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

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])

【讨论】:

  • sorted() 返回一个新列表;它不会就地排序。
  • @JohnGordon,谁说过就地排序?
  • 给我这个 [['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']]
  • 当然,我给出的示例是生成一个新列表,而不是就地对原始列表进行排序(这将是一种罪过)...只需将其分配给您想要的输出变量。
  • @PierreD 让我再试一次!
猜你喜欢
  • 1970-01-01
  • 2020-10-01
  • 1970-01-01
  • 2012-04-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-31
相关资源
最近更新 更多