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

如何遍历反序列化后的JSON统计特定状态码的数量

统计JSON中各状态码的总数

解析与统计步骤

  1. 解析JSON数据:将API返回的JSON字符串(或响应对象)转换为Python字典。如果用requests调用API,直接用response.json()即可;如果是字符串,用json.loads()解析。
  2. 提取目标列表:从字典中取出results字段对应的数组,这是包含所有任务数据的集合。
  3. 统计状态频次:有两种规范的实现方式,按需选择:

代码实现

import json
from collections import Counter

# 示例JSON字符串(实际场景可替换为API响应解析结果)
json_data = '''
{
  "results": [
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS1",
      "status_updated": "2022-09-30T05:57:27.675000-04:00",
      "task_id": "T178"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS2",
      "status_updated": null,
      "task_id": "T1213"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS1",
      "status_updated": null,
      "task_id": "T1188"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS2",
      "status_updated": null,
      "task_id": "T1177"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS1",
      "status_updated": null,
      "task_id": "T554"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS2",
      "status_updated": null,
      "task_id": "T1539"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS3",
      "status_updated": null,
      "task_id": "T106"
    },
    {
      "accepted": true,
      "relevant_via_survey": true,
      "status": "TS2",
      "status_updated": null,
      "task_id": "T65"
    }
  ],
  "facets": {}
}
'''

# 1. 解析JSON为Python字典
data = json.loads(json_data)

# 2. 提取results列表
tasks = data['results']

# 方法一:用Counter快速统计(推荐,简洁高效)
status_counter = Counter(task['status'] for task in tasks)
print("Counter统计结果:", status_counter)
# 输出:Counter统计结果: Counter({'TS2': 4, 'TS1': 3, 'TS3': 1})

# 方法二:手动循环计数(适合理解逻辑)
status_counts = {}
for task in tasks:
    status = task['status']
    status_counts[status] = status_counts.get(status, 0) + 1
print("手动统计结果:", status_counts)
# 输出:手动统计结果: {'TS1': 3, 'TS2': 4, 'TS3': 1}

说明

  • Counter方法:Python标准库collections中的Counter是专门用于频次统计的工具,通过生成器表达式遍历所有任务的status字段,一行代码即可完成统计,是工业界常用的规范写法。
  • 手动循环:通过字典的get方法简化计数逻辑(get(status, 0)表示如果键不存在则返回0),适合新手理解统计的底层原理。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 14:30:40