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

基于日期最大值条件筛选嵌套列表,保留同第四元素的最新条目

嘿,这个需求很常见,用Python处理起来其实挺简单的,我给你分享个高效的实现方式:

核心思路

我们可以用字典分组的方法:把每个子列表的第四个元素作为分组的键,然后在每个分组里只保留日期最新的那条记录。因为字典的键是唯一的,刚好能帮我们自动去重分组,再配合日期比较就能筛选出最新项。

具体代码实现
# 你的原始数据
a = [
    ['2012-05-11','yes','44','426.24'],
    ['2013-03-22','no','12','426.24'],
    ['2018-08-13','yes','88','426.24'],
    ['2017-05-11','yes','404','450.24']
]

# 初始化字典,用来存每个分组的最新记录
latest_dict = {}

for record in a:
    group_key = record[3]  # 用第四元素当分组键
    current_date = record[0]
    
    # 两种情况更新字典:要么分组还没记录,要么当前日期比已存的更新
    if group_key not in latest_dict or current_date > latest_dict[group_key][0]:
        latest_dict[group_key] = record

# 把字典里的值转成列表,就是最终结果
result = list(latest_dict.values())
print(result)
代码细节解释
  • 为什么能用字符串日期直接比较?因为你的日期是YYYY-MM-DD格式的,这种格式的字符串在Python里可以直接按字典序比较,结果和实际日期的先后完全一致,省了转日期对象的麻烦~
  • 字典的键自动帮我们完成了分组,每个键对应一个唯一的第四元素值,不会重复。
  • 遍历过程中会不断更新每个分组的最新记录,最后把所有值提取出来就是我们要的结果。

运行这段代码后,输出的结果就是你期望的:

[['2018-08-13', 'yes', '88', '426.24'], ['2017-05-11', 'yes', '404', '450.24']]

如果后续你的日期格式变了(比如不是YYYY-MM-DD),那可以用datetime模块把字符串转成datetime对象再比较,不过这个场景下直接用字符串比较就足够啦。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 10:41:47