循环目录列表时如何在变量中存储值

2024-06-02 13:45:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想解决以下问题。我有变量数据\u 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)

Tags: inidjsonhomefordatavaluevar
2条回答

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)

如果您的json认为“homeTeam”引用的是字符串而不是字典,那么它的格式可能不正确。你知道吗

尝试:

import json
data_json = json.loads(data_json)
home_team_id = id["homeTeam"]["team_id"]
away_team_id = id["awayTeam"]["team_id"]

第二个问题可能是它在以下方面失败了:

fixture_id = id["fixture_id"]

因为“fixtures”引用了一个列表。所以你也应该试试:

fixture_id = data_json_looping_on[0]["fixture_id"]

相关问题 更多 >