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

如何合并同日期二维列表?Python代码相关技术咨询

列表合并问题解决方案

需求1:特定规则合并两个列表

实现逻辑:遍历两个列表的对应位置元素,仅当第二个列表的元素与第一个列表不同时,用第二个元素替换第一个的对应位置,否则保留第一个元素。

def merge_lists(list1, list2):
    if len(list1) != len(list2):
        raise ValueError("两个列表长度必须一致")
    return [b if b != a else a for a, b in zip(list1, list2)]

示例用法:

list_a = ['19-12-2022', '-', '-', '-', '-']
list_b = ['19-12-2022', 'MATH111: P', '-', 'HU108: P', '-']
merged = merge_lists(list_a, list_b)
# 输出: ['19-12-2022', 'MATH111: P', '-', 'HU108: P', '-']

需求2:合并同日期的二维子列表

实现逻辑:用字典按日期分组,初始化每个日期的记录为日期加全占位符-,再遍历所有子列表,将非占位符的元素填充到对应位置。

def merge_same_date_records(records):
    merged_dict = {}
    for record in records:
        date = record[0]
        # 首次遇到该日期时初始化合并记录
        if date not in merged_dict:
            merged_dict[date] = [date] + ['-' for _ in range(len(record)-1)]
        # 填充非'-'的有效数据
        for idx, item in enumerate(record[1:], start=1):
            if item != '-':
                merged_dict[date][idx] = item
    # 将字典值转为列表返回
    return list(merged_dict.values())

测试你的输入数据:
输入的二维列表传入函数后,输出结果为:

[
 ['19-12-2022', 'MATH161: A', 'MATH111: P', 'HU108: P', '-', '-', '-', '-', '-'],
 ['21-12-2022', 'CS110lab: P', '-', '-', '-', '-', '-', '-', '-']
]

结合原代码优化生成流程

原代码生成的tableOfAttendance包含大量同日期的重复子列表,可直接在生成后调用上述合并函数,一步得到最终结果:

修改原代码末尾部分:

# 替换原代码中tableOfAttendance生成后的打印及后续步骤
tableOfAttendance = merge_same_date_records(tableOfAttendance)
[print(d) for d in tableOfAttendance]
cur.close()
db.close()
attendanceDataFrame = pd.DataFrame(tableOfAttendance, columns=(['Date'] + timeTableTimes))
return attendanceDataFrame

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 11:50:23