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

Python提取嵌套JSON中符合条件的最早timestamp代码优化咨询

原有代码逻辑错误说明

  • 数据结构访问错误:hs_lead_info是包含value、versions两个键的字典,不是数组,直接遍历hs_lead_info只会拿到它的键名字符串,无法获取版本数据
  • 嵌套层级错误:versions是hs_lead_info下的数组,每个数组元素才是包含value、timestamp字段的单条版本记录,原代码写的field['versions']['value']完全搞错了字段层级
  • min函数使用错误:min('timestamp')是对字符串'timestamp'的单个字符取最小值,和你要取多个条目最小timestamp的需求完全无关
  • 取值逻辑错误:原代码匹配到第一个符合条件的条目就直接返回,没有收集所有符合条件的条目再取最小时间
  • 数据源路径错误:结合完整业务代码看,hs_lead_status是存放在data['properties']下的,你直接从data['hs_lead_status']根路径取值根本拿不到数据

修正后代码

直接替换原代码中hs_lead_info定义和get_hs_lead_info函数即可:

hs_lead_info = data.get("properties", {}).get("hs_lead_status", {})
def get_hs_lead_info():
    # 先取版本列表,不存在就返回空
    versions = hs_lead_info.get("versions", [])
    # 过滤所有value等于目标值的版本条目
    matched_versions = [v for v in versions if v.get("value") == "HANDOVER_TO_ADVOCATE"]
    if not matched_versions:
        # 无匹配条目返回None,可根据业务需求改成空字符串
        return None
    # 取所有匹配条目的最小timestamp
    return min(v.get("timestamp") for v in matched_versions)

调用时修改对应字段赋值即可:

hand_over_advocate_date=get_hs_lead_info(),

本地校验方法

不需要依赖测试环境,直接用你提供的示例JSON构造测试数据即可验证逻辑:

# 构造测试用模拟数据
test_data = {
    "properties": {
        "hs_lead_status": {
            "value": "Closure - Successful - Re-Employment",
            "versions": [
                # 把你示例里的所有versions条目完整粘贴到这里即可
                {"value": "Closure - Successful - Re-Employment", "timestamp": 1632381167439},
                {"value": "(CH)_Court_Order_Filed_Advocard", "timestamp": 1616073472239},
                {"value": "HANDOVER_TO_ADVOCATE", "timestamp": 1616073465338},
                {"value": "HANDOVER_TO_ADVOCATE", "timestamp": 1608626160658}
            ]
        }
    }
}
# 调用函数测试,预期输出最小timestamp:1608626160658
print(get_hs_lead_info())

本地运行确认输出符合预期后再上线即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 14:30:04