首页 > 解决方案 > 如何在循环字典列表时将值存储在变量中

问题描述

我想解决以下问题。我有变量 data_json ,其中包含以下结构的 json 数据

data_json = 
"api": {"results": 402, 
"fixtures": 
[{"fixture_id": 127807, 
"league_id": 297, 
"round": "Clausura - Semi-finals",  
"statusShort": "FT", 
"elapsed": 90,
"venue": "Estadio Universitario de N)",  
"referee": null, 
"homeTeam": {"team_id": 2279,  
             "team_name": "Tigres UANL",  
             "logo": "url"}, 
"awayTeam": {"team_id": 2282,
             "team_name": "Monterrey",  
             "logo": "url1"},   
"goalsHomeTeam": 1,
"goalsAwayTeam": 0, 
"score": {"halftime": "1-0",
          "fulltime": "1-0", 
          "extratime": null, 
          "penalty": null}},
 ....... another fixture-ids
 }
 }

 the same piece of data in another fixture_id

我需要提取每个键的值:值对并将提取的值保存到变量中。我需要以下输出

var fixture_id = fixture_id[value]
var league_id = league_id[value]
var round = round[value]
var statusshort = statusShort[value]
var elapsed = elapsed[value]
var venue = venue[value]
var referee = referee[value] 
var home_team_id = homeTeam.team_id[value]
var home_team_name = homeTeam.team_name[value]
var home_team_logo = homeTeam.logo[value] 
##the same for awayTeam dictionary 

我尝试通过以下代码循环我的 json

data_json_looping_on = data_json["api"]["fixtures"]
for id in data_json_looping_on:
    fixture_id = id["fixture_id"]
    league_id = id["league_id"]
    the same logic for each 
    simple key value pairs. But when   
    looping go up on dictionariy i tried
    following loop
    for item in id["homeTeam"]
          home_team_id = item["team_id"]

这是上面代码的回溯

 ------------------------------------------------      
 TypeError Traceback (most recent call last)
 <ipython-input-8-958a38c41236> in
 <module> 18 venue = item["venue"]
  19 referee = item["referee"] ---> 20 
  for item in id["homeTeam"]: 21
  home_team_id = item["team_id"] 22
  print(home_team_id) TypeError:
  string indices must be integers
  ------------------------------------------------------

我尝试了另一种方法

data_json_looping_on = data_json["api"]["fixtures"]
for id in data_json_looping_on:
      fixture_id = id["fixture_id"]
      league_id = id["league_id"]
      #the same for logic for each 
      simple key value pairs. 
      But when go up on 
      home_team_id = id["homeTeam"]["team_id"]
      print(home_team_id)

Python 出现以下错误

 ------------------------------------------------   
     TypeError Traceback (most recent call last)
     <ipython-input-5-1fe42572d5ae> in
     <module> 18 venue = item["venue"]
    19 referee = item["referee"] ---> 20
    home_team_id = id["homeTeam"]
    ["team_id"] 21 print(home_team_id)
    TypeError: string indices must be integers

我如何提取 homeTeam 和 awayTeam 字典的值?如果您有其他提取逻辑,请给我您的建议

这是我的真实代码

date_fixt = open("../forecast/endpoints/date_fixtures.txt", "r")
date_fixt_json = json.load(date_fixt)
data_json = date_fixt_json["api"]["fixtures"]
for item in data_json:
       fixture_id = item["fixture_id"]
       league_id = item["league_id"]
       event_date = item["event_date"]
       event_timestamp = item["event_timestamp"]
       firstHalfStart = item["firstHalfStart"]
       secondHalfStart = item["secondHalfStart"]
       round_count = item["round"]
       status = item["status"]
       statusShort = item["statusShort"]
       elapsed = item["elapsed"]
       venue = item["venue"]
       referee = item["referee"]
       for item in id["homeTeam"]:
           home_team_id = item["team_id"]
           print(home_team_id)

标签: python

解决方案


id["homeTeam"]并且id["awayTeam"]不是列表(它们周围没有方括号),它们只是单个字典。所以你不需要遍历它们。

date_fixt = open("../forecast/endpoints/date_fixtures.txt", "r")
date_fixt_json = json.load(date_fixt)
data_json = date_fixt_json["api"]["fixtures"]
for item in data_json:
       fixture_id = item["fixture_id"]
       league_id = item["league_id"]
       event_date = item["event_date"]
       event_timestamp = item["event_timestamp"]
       firstHalfStart = item["firstHalfStart"]
       secondHalfStart = item["secondHalfStart"]
       round_count = item["round"]
       status = item["status"]
       statusShort = item["statusShort"]
       elapsed = item["elapsed"]
       venue = item["venue"]
       referee = item["referee"]
       home_team_id = item["homeTeam"]["team_id"]
       print(home_team_id)
       away_team_id = item["awayTeam"]["team_id"]
       print(away_team_id)

推荐阅读