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

Python:按CSV中START_DATE对字典值的工作列表按时间排序

如何按时间顺序为员工的工作经历列表排序?

看起来你已经完成了员工工作经历的分组和去重,只差最后一步按时间排序的环节。让我帮你修改代码,实现按START_DATE升序排列每个员工的工作列表:

问题回顾

你的jobData.csv数据(修正为标准CSV逗号分隔格式):

EMPLOYEE,START_DATE,END_DATE,JOB,DIVISION
Tom,20180101,20191028,Job1,Div_B
Tom,20160101,20171231,Job1,Div_B
Tom,20150609,20151231,Job1,Div_B
Dick,20191001,,Job4,Div_D
Dick,20190609,20190930,Job3,Div_C
Dick,20170309,20180608,Job2,Div_A
Dick,20160609,20170308,Job1,Div_B
Harry,20180701,,Job2,Div_A
Harry,20180101,20180630,Job2,Div_A
Harry,20160101,20171231,Job1,Div_A

你的目标是生成这样的字典:

d = { 'Tom': ['Job1'], 'Dick': ['Job1', 'Job2', 'Job3', 'Job4'], 'Harry': ['Job1', 'Job2'] }

修改后的代码

import csv
from collections import defaultdict

# 用defaultdict自动初始化员工对应的空列表
employee_jobs = defaultdict(list)

with open('jobData.csv', 'r') as jobDataFile:
    jobDataReader = csv.reader(jobDataFile)
    next(jobDataReader)  # 跳过表头行
    
    # 第一步:收集每个员工的(开始日期, 工作岗位)配对
    for row in jobDataReader:
        employee = row[0]
        start_date = row[1]
        job = row[3]
        employee_jobs[employee].append( (start_date, job) )

# 第二步:对每个员工的记录按日期排序,再去重生成有序工作列表
for emp, records in employee_jobs.items():
    # 按START_DATE升序排序(YYYYMMDD格式的字符串可直接按字典序比较,等价于时间顺序)
    sorted_records = sorted(records, key=lambda x: x[0])
    # 去重并保留时间顺序
    unique_jobs = []
    for date, job in sorted_records:
        if job not in unique_jobs:
            unique_jobs.append(job)
    employee_jobs[emp] = unique_jobs

# 转换为普通字典并查看结果
print(dict(employee_jobs))

关键修改点说明

  • 用defaultdict简化代码:省去了原代码中判断员工是否已在字典里的繁琐步骤,自动为新员工创建空列表。
  • 绑定日期与工作:先把每个员工的START_DATE和JOB作为元组存入列表,这样后续可以基于日期排序。
  • 按日期排序:由于你的日期是YYYYMMDD格式的字符串,直接排序就和时间顺序完全一致,不用额外转换日期格式。
  • 排序后再去重:确保去重后的工作列表是严格按照时间先后顺序排列的。

输出结果

运行代码后会得到你预期的字典:

{'Tom': ['Job1'], 'Dick': ['Job1', 'Job2', 'Job3', 'Job4'], 'Harry': ['Job1', 'Job2']}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 08:41:21