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

Python如何获取字典列表中最后一个ORDER_CHANGED事件的时间戳?

获取字典列表中最后一个符合条件的事件时间戳

我有一个字典列表,每个字典的格式如下:

{
    'id': 'XYZ_ALL_UNIQUE',
    'event_type': 'TYPE OF EVENT',
    'created_time': '2023-05-29T11:23:54.456170Z'
}

列表中的每个字典对应一个唯一事件,比如ORDER_CREATED、ORDER_DELIVERED等,且每个事件都有唯一时间戳。其中ORDER_FULFILLED事件仅存在一个,我可以通过以下代码获取其时间戳:

for item in list_of_dict:
    if item['event_type'] == 'ORDER_FULFILLED':
        fulfilled_time = item['created_time']

但存在多个event_type为ORDER_CHANGED的事件及对应的时间戳,使用现有循环代码会遍历所有该类型事件,我只需要该类型最后一个事件的时间戳,忽略其他同类型事件。尝试过list.count(True)但无法满足需求,想请教Python中如何获取列表中多个符合条件项的最后一个结果?


解决方法

方法一:反向遍历(高效推荐)

从列表末尾开始遍历,找到第一个符合条件的事件就停止,这个事件就是原列表中最后一个符合条件的项:

changed_time = None
for item in reversed(list_of_dict):
    if item['event_type'] == 'ORDER_CHANGED':
        changed_time = item['created_time']
        break

这种方式不需要遍历整个列表,找到目标就终止,在列表较大时效率更高。

方法二:筛选后取最后一项

先筛选出所有符合条件的事件,再通过索引[-1]取最后一个:

changed_events = [item for item in list_of_dict if item['event_type'] == 'ORDER_CHANGED']
changed_time = changed_events[-1]['created_time'] if changed_events else None

注意要处理没有找到该类型事件的情况,避免索引越界错误。

方法三:生成器表达式结合next()

用生成器表达式反向遍历,通过next()直接获取第一个符合条件的结果,内存占用更低(无需生成完整的筛选列表):

changed_time = next(
    (item['created_time'] for item in reversed(list_of_dict) if item['event_type'] == 'ORDER_CHANGED'),
    None
)

第二个参数None是默认值,当没有找到符合条件的事件时返回它。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 15:53:32