gpt4 book ai didi

python - 在 Python 中对日期进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 14:51:29 25 4
gpt4 key购买 nike

我将一些计划任务的日期和时间段以这种格式保存在一个 txt 中:

Monday,10:50-11:32

Friday,18:33-18:45

Sunday,17:10-17:31

Sunday,14:10-15:11

Friday,21:10-23:11

我正在打开 txt 并获取列表中的内容。如何对列表进行排序以按顺序获取日期和时间段?像这样:

Monday,10:50-11:32

Friday,18:33-18:45

Friday,21:10-23:11

Sunday,14:10-15:11

Sunday,17:10-17:31

最佳答案

好吧,假设您只有星期几和时间戳。一种替代方法是计算每个项目的分钟数(星期一 00:00 = 0 分钟,星期日 23:59 = 最大分钟数)并使用该函数进行排序。

下面的示例使用第一个时间戳值进行排序。一位 SO:er 的评论指出,这不包括第二个时间戳(结束时间)。为了包括这一点,我们可以通过反转每天的分钟数来添加一个小数值。

((int(h2)* 60 + int(m2))/24*60) # minutes divided by maximum minutes per day gives a decimal number

不过这里的关键是下面的代码:

weekday[day]*24*60 + int(h1)*60 + int(m1) # gets the total minutes passed, we sort with this!

当然还有带有连接(双折线)的排序功能。当您将键传递给 sorted() 并且该键是一个函数时,排序将基于该函数的返回值(即分钟数)。

'\n\n'.join(sorted(list_, key=get_min))

文字够多了...让我们跳到完整示例更新版本

import io

file= """Monday,10:50-11:32

Friday,18:33-18:45

Sunday,17:10-17:31

Sunday,17:10-15:11

Friday,21:10-23:11"""

list_ = [i.strip('\n') for i in io.StringIO(file).readlines() if i != "\n"]

weekday = dict(zip(["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],[0,1,2,3,4,5,6]))

def get_min(time_str):
day,time = time_str.split(",")
h1, m1 = time.split('-')[0].split(":")
h2, m2 = time.split('-')[1].split(":")
return weekday[day]*24*60 + int(h1)*60 + int(m1) + ((int(h2)* 60 + int(m2))/24*60)

with open("output.txt", "w") as outfile:
outfile.write('\n\n'.join(sorted(list_, key=get_min)))
print('\n\n'.join(sorted(list_, key=get_min)))

创建“output.txt”:

Monday,10:50-11:32

Friday,18:33-18:45

Friday,21:10-23:11

Sunday,17:10-15:11

Sunday,17:10-17:31

关于python - 在 Python 中对日期进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45401426/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com