我有一个如下所示的json文件:
[
{
"image_path": "train640x480/2d4_2.bmp",
"rects": [
{
"y2": 152.9,
"y1": 21.2,
"x2": 567.3,
"x1": 410.8
}
]
},
{
"image_path": "train640x480/1dd_1.bmp",
"rects": [
{
"y2": 175.1,
"y1": 74.7,
"x2": 483.8,
"x1": 230.8
}
]
}
]
当我这样做时
H = {}
with open('train.json', 'r') as json_data:
H = json.load(json_data)
print(H)
如何访问每张图片的矩形值?我试过了
H['image_path:'][os.path.join(directory, filename)]
但返回
TypeError: list indices must be integers or slices, not str
任何帮助都将不胜感激。
答案 0 :(得分:3)
您的json文件包含 词典列表,这意味着您首先需要遍历列表,然后才能访问词典的内容。
e.g。
for items in H:
if items['image_path'] == os.path.join(directory, filename):
print items['rects']
如果您的json看起来像这样,您就可以像预期的那样访问条目。
{
"train640x480/2d4_2.bmp":
{
"rects": [
{
"y2": 152.9,
"y1": 21.2,
"x2": 567.3,
"x1": 410.8
}
]
},
"train640x480/1dd_1.bmp":
{
"rects": [
{
"y2": 175.1,
"y1": 74.7,
"x2": 483.8,
"x1": 230.8
}
]
}
}
e.g。
print H['train640x480/2d4_2.bmp']['rects]
答案 1 :(得分:0)
您应首先将一个数字作为索引来访问第一个列表。您的json数据被构造为列表然后字典然后列出顶点的字典。您的查询应该是
2016
和
H[0]["rects"][0] # the fist rectangle dictionary
答案 2 :(得分:0)
试试此代码
print H[0]["image_path"]
print H[0]["rects"][0]["y2"]
print H[1]["image_path"]
print H[1]["rects"][0]["y2"]