【问题标题】:Extract data from a list within dictionary using JSON使用 JSON 从字典中的列表中提取数据
【发布时间】:2020-10-19 01:21:19
【问题描述】:

我正在使用一个 OKR 程序,我试图从它的 API 中提取目标和关键结果(下面的示例匿名 JSON 输出)。我想使用 while 循环来遍历目标可能具有的一个或多个关键结果。但是,我在 "metric_name =(u['people_goals'][0]['goal_metrics'][keymetric_start]['metric_name'])" 行中遇到 [keymetric_start] 的回溯错误,说“IndexErrorL 列表索引超出范围”。如何让它接受 keymetric_start 作为变量?非常感谢!

{
  "success": true,
  "message": "",
  "data": {
    "totalCount": 14,
    "goal": [{
        "user_id": 12345,
        "people_goals": [{
            "goal_id": 13579,
            "goal_name": "move the business forward",
            "goal_metrics": [{
                "metric_id": "2468",
                "metric_name": "Raise more money",
                "metric_progress": "50"
              },
              {
                "metric_id": "2469",
                "metric_name": "Get more financing",
                "metric_progress": "25"
              },
              {
                "metric_id": "2470",
                "metric_name": "Understand risks",
                "metric_progress": "75"
              }
            ],
            "goal_metrics_count": 3
          },
        }
      ]
    }
  ]
}
}
for u in js['data']['goal']:
  goal_name = (u['people_goals'][0]['goal_name'])
  keymetric_count = (u['people_goals'][0]['goal_metrics_count'])
  keymetric_start = 0
  while keymetric_start <= keymetric_count:
    metric_name =(u['people_goals'][0]['goal_metrics'][keymetric_start]['metric_name'])
    keymetric_start = keymetric_start +1

【问题讨论】:

    标签: json data-extraction


    【解决方案1】:

    我觉得问题出在这一行 - while keymetric_start &lt;= keymetric_count:

    你是说它们都可以相等,这意味着keymetric_start 的最大值可以是 3。

    但是,goal_metrics 中只有 3 个元素,因此 keymetric_start 的最高允许值应该是 2(而不是 3),因为数组的索引从零开始。

    您可以尝试在您的 while 子句中执行此操作:

    while keymetric_start < keymetric_count:
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-16
      • 2019-04-18
      • 2020-07-06
      • 1970-01-01
      • 2020-08-04
      相关资源
      最近更新 更多