繁体   English   中英

如何访问始终在同一个 position 中但名称不同的字段?

[英]How to access a field that is always in the same position, but has a different name?

我正在玩一些 JSON 格式的足球比赛数据,通过以下方式保存在变量“matches”中

with open('path') as json_data:
    matches = json.load(json_data)

以下是第 1 场比赛的数据摘录(通过“matches[1]”获得:

{
  "status": "Played",
  "roundId": 4405517,
  "gameweek": 34,
  "teamsData": {
    "2482": {
      "scoreET": 0,
      "coachId": 272299,
      "side": "home",
      "teamId": 2482,
      "score": 3,
      "scoreP": 0,
      "hasFormation": 1,
      "formation": {
        "bench": [

字段“2482”的名称是参加比赛的两支球队之一的 ID(另一支球队稍后会出现,但即使提供一场比赛的整个比赛数据也会使这篇文章太长)。 数据是这样进行的(306 场比赛,每场 2 支球队),即场总是在数据中的同一个 position 中。 但是,由于该字段的名称总是不同的,因此我很难在没有首先查找团队 ID 的情况下访问它,例如第 20 场比赛

match[20]['teamsData'][1]

不起作用(“KeyError:1”)。

谁能帮我吗?

您可以将字典视为索引,在您的情况下,您可以使用更方便的值重新索引数据。 如果“side”总是“home”或“away”,您可以使用该已知值而不是变量 team id 值。

在此示例中,“teamsData”被重新索引的字典替换。

for match in matches:
    match["teamsData"] = {value["side"]:value for value in match["teamsData"].values()}

matches[20]["teamData"]["home"]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM