【发布时间】:2020-04-09 14:11:39
【问题描述】:
我想了解如何在 Python 3 中迭代以下 JSON,具体来说,我希望能够提取“id”和“lname”。我的实际 JSON 文件有大约 300 个条目
{
"datainfos": [{
"DataInfo": [{
"id": 1,
"lname": "Altitude",
"max": 62.79999923706055,
"min": -37.20000076293945,
"numInstances": 1,
"sname": "ALT",
"unit": "m"
}]
},
{
"DataInfo": []
},
{
"DataInfo": [{
"id": 3,
"lname": "Position Error",
"max": 0,
"min": 0,
"numInstances": 1,
"sname": "EPE",
"unit": "m"
}]
},
{
"DataInfo": [{
"id": 4,
"lname": "HDOP",
"max": 0,
"min": 0,
"numInstances": 1,
"sname": "HDOP",
"unit": ""
}]
}
]
}
我的代码如下:
import json
f = open('data1.json')
data = json.load(f)
f.close()
for dataitems in data['datainfos']:
print (dataitems['DataInfo'])
Python 返回一个列表,而不是字典。当我尝试使用以下代码时
import json
f = open('data1.json')
data = json.load(f)
f.close()
for dataitems in data['datainfos']:
print (dataitems['DataInfo']['lnames'])
我得到错误:
Traceback(最近一次调用最后一次): 文件“C:\Users\phil\Documents\Python Scripts\UMP-VDR\Testing Files\convertjson.py”,第 9 行,在 打印(数据项['DataInfo']['lnames']) TypeError:列表索引必须是整数或切片,而不是 str [0.1s完成]
【问题讨论】:
-
试试dataitems['DataInfo'][0]['lnames']),DataInfo是列表
-
我知道你想要在 python 中,但在
shell你可以使用jq作为cat given.json | jq -r ".datainfos[].DataInfo[].id"
标签: python json python-3.x nested iteration