python按日期排序_用Python排序日期

好的,假设您只有星期几和时间戳记.一种替代方法是计算每个项目的分钟数(星期一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()并且该键是一个函数时,排序将基于该函数的返回值(即分钟数).

'

'.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('

') for i in io.StringIO(file).readlines() if i != "

"]

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('

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

print('

'.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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值