python - 如何在循环字典列表时将值存储在变量中
问题描述
我想解决以下问题。我有变量 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)
解决方案
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)
推荐阅读
- java - 异常 javax.servlet.ServletException javax.faces.webapp.FacesServlet.service(未知来源)
- c# - 如何使用 Microsoft bot 框架通过 facebook messenger (C#) 向用户发送音频
- flask - 烧瓶如何使数据库查询引用保持最新
- java - 带有类元素的java队列
- rotation - 如何让乌龟绕着一个点转
- mongodb - @query 注释在 spring boot 中不适用于 hibernate-ogm 和 mongodb
- android - 数据未更改时调用 Android ViewModel onChanged
- android - retrofit-2 - 在将图像和音频上传到 aws 服务器时获取 403 响应代码
- ruby-on-rails - 每个 current_user Rails
- android - 验证应用内购买