如何获取JSON列表中指定名称应用的最新元素?
获取指定名称的最新应用元素
没问题,这事儿其实挺简单的!你已经搞定了筛选指定名称应用的核心步骤,接下来只需要从筛选后的列表里挑出时间戳最大的那个应用就行——因为starttime是毫秒级的时间戳,数值越大代表启动时间越晚,也就是最新的应用。
方法一:直接用max()函数(最简洁)
你可以利用Python内置的max()函数,通过指定key参数来基于starttime比较元素:
# 先筛选出目标名称的应用 filtered_apps = [app for app in parsedjson['completedapps'] if app['name'] == "IE_Traitement_OA"] # 找出starttime最大的最新应用 latest_app = max(filtered_apps, key=lambda app: app['starttime'])
这样latest_app就是你要找的最新应用元素了。
方法二:处理空列表的情况(更健壮)
如果有可能出现没有匹配到指定名称应用的情况,最好加个判断避免报错:
filtered_apps = [app for app in parsedjson['completedapps'] if app['name'] == "IE_Traitement_OA"] if filtered_apps: latest_app = max(filtered_apps, key=lambda app: app['starttime']) else: # 这里可以根据需求处理“无匹配应用”的场景 print("没有找到名称为IE_Traitement_OA的应用") latest_app = None
补充:关于用submitdate的情况
如果非要用submitdate字符串来比较,需要先把它转换成datetime对象,步骤会繁琐一点,示例如下:
from datetime import datetime filtered_apps = [app for app in parsedjson['completedapps'] if app['name'] == "IE_Traitement_OA"] if filtered_apps: # 定义日期格式,和submitdate的格式匹配 date_format = "%a %b %d %H:%M:%S %Z %Y" latest_app = max(filtered_apps, key=lambda app: datetime.strptime(app['submitdate'], date_format))
不过还是更推荐用starttime,毕竟时间戳直接比较数值就好,不用额外做格式转换~
内容的提问来源于stack exchange,提问作者Kementari
相关产品推荐
相关产品推荐

