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

如何在Python3中结合datetime与lambda合并排序含日期列表

问题分析与修复方案

代码中的核心问题

  1. 合并列表逻辑错误:mergeLists函数循环时错误地将整个list1/list2添加到newList,而非单条记录元素。导致newList的元素是完整子列表,而非预期的单条数据,后续排序必然出错(虽然长度显示为6,但内容结构完全错误)。
  2. 日期解析语法错误:sorted的key函数中,datetime.strptime缺少日期格式参数,且重复调用datetime.datetime(已导入datetime,直接调用即可)。
  3. 冗余代码:get_list1和get_list2功能完全一致,可合并为通用函数减少重复。

修正后的完整代码

from datetime import datetime
from typing import List


def load_data(file_name: str) -> List[List[str]]:
    data = []
    with open(file_name, 'r', newline='') as input_file:
        for line in input_file:
            # 去除换行符并分割字段
            cleaned_line = line.strip('\r\n')
            fields = cleaned_line.split(';')
            data.append(fields)
    return data


def merge_and_sort(list1: List[List[str]], list2: List[List[str]]) -> List[List[str]]:
    # 直接合并两个列表,无需循环逐个添加
    merged_list = list1 + list2
    # 按日期排序:将字符串日期转为datetime对象作为排序依据
    sorted_list = sorted(merged_list, key=lambda x: datetime.strptime(x[0], '%Y-%m-%d'))
    return sorted_list


def format_output(sorted_data: List[List[str]]) -> None:
    # 转换为期望的字符串格式并打印
    formatted = [';'.join(item) for item in sorted_data]
    print('[', ',\n '.join(formatted), ']', sep='')


# 执行流程
bitcoin_data = load_data("bitcoin.txt")
exchange_data = load_data("exchange.txt")
sorted_result = merge_and_sort(bitcoin_data, exchange_data)
format_output(sorted_result)

关键知识点说明

1. 日期排序的核心逻辑

字符串日期直接排序会按字符顺序(比如"2022-08-10"会错误排在"2022-08-2"前面),必须转为datetime对象才能正确识别日期先后。

lambda x: datetime.strptime(x[0], '%Y-%m-%d')的含义:

  • lambda x:代表排序时的每个元素(即单条记录的子列表)
  • x[0]:取子列表的第一个元素(日期字符串)
  • datetime.strptime(x[0], '%Y-%m-%d'):将字符串按年-月-日格式解析为datetime对象,作为排序依据

2. 列表合并的简化写法

Python中两个列表直接用+运算符即可合并,无需循环逐个添加,比如list1 + list2会直接生成包含两个列表所有元素的新列表。

3. 代码复用

将重复的文件读取逻辑封装为load_data函数,后续新增数据源时只需调用该函数,避免代码冗余。

运行结果

执行后会输出你期望的格式:

[2022-08-01;buy;100,
 2022-08-02;buy;200,
 2022-08-03;sell;300,
 2022-08-04;buy;50,
 2022-08-05;sell;25,
 2022-08-06;buy;10]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 03:20:14