You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Python实现am/pm格式12小时制时间按时间顺序正确排序

12小时制时间排序问题修正方案

原代码存在的问题

  • 基础语法错误:循环条件中错误使用len(last),你定义的输入时间列表名为lst,运行会直接抛出变量未定义报错
  • 无排序逻辑:仅将12点的时间插入列表开头,其余时间按输入顺序追加,导致7:02am排在11:00am之后,不符合时间顺序要求
  • 函数逻辑耦合严重:自定义的lenght、ampm函数都依赖全局变量i,传参完全没有生效,代码可维护性极低

修正方案

通过给每个时间生成独立的排序权重实现需求,不需要手动处理插入位置,代码逻辑更简洁可靠:

# 读取输入
time_str = input("Please enter the boost times: ")
time_list = time_str.split()

def get_sort_key(time_item):
    # 拆分am/pm标记和时间部分
    period = time_item[-2:]
    hour, minute = map(int, time_item[:-2].split(':'))
    # 按规则计算小时权重
    if period == 'am':
        weight_hour = 0 if hour == 12 else hour
    else:
        weight_hour = 12 if hour == 12 else hour + 12
    # 叠加分钟权重保证同小时内按分钟排序
    return weight_hour + minute / 60

# 按权重全局排序
sorted_time = sorted(time_list, key=get_sort_key)
# 拆分am、pm列表
lsta = [t for t in sorted_time if t.endswith('am')]
lstp = [t for t in sorted_time if t.endswith('pm')]

print(lsta, lstp)

测试效果

输入测试用例11:00am 12:59am 5:02pm 7:02am 8:00pm,输出结果为:
['12:59am', '7:02am', '11:00am'] ['5:02pm', '8:00pm'],完全符合要求的排序规则。

内容的提问来源于stack exchange,提问作者user17284806

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:06:08