我正在尝试从python列表对象的特定列中检索值。这是来自Log Analytics API的响应格式-https://dev.loganalytics.io/documentation/Using-the-API/ResponseFormat
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"tables": [
{
"name": "PrimaryResult",
"columns": [
{
"name": "Category",
"type": "string"
},
{
"name": "count_",
"type": "long"
}
],
"rows": [
[
"Administrative",
20839
],
[
"Recommendation",
122
],
[
"Alert",
64
],
[
"ServiceHealth",
11
]
]
}
]
}
有数百列,我想读取特定的列和行值。为此,我最初尝试为该列查找索引,例如“ Category”,然后从行中检索所有值。这是我到目前为止所做的。
result=requests.get(url, params=params, headers=headers, verify=False)
index_category = (result.json()['tables'][0]['columns']).index('Category')
结果包含上面发布的格式的数据。我得到以下错误。我想念什么?
ValueError: 'Category' is not in list
我希望能够从循环中的行数组中检索类别值。我也在循环下面完成了此操作,我能够得到我想要的,但是想确认是否有更好的方法可以做到这一点。另外,我在读取行值之前先检索列索引,因为我怀疑盲目读取带有显式索引值的行值容易出错,特别是当列顺序发生更改时。
for column in range(0,columns):
if ((result.json()['tables'][0]['columns'][column]['name']) == 'Category'):
index_category = column
for row in range(0,rows):
print(result.json()['tables'][0]['rows'][row][index_category])
json_data = results.json()
for index, columns in enumerate(json_data['tables'][0]['columns']):
if columns['name'] == 'Category':
category_index = index
break
category_list = []
for row in json_data['tables'][0]['rows']:
category_list.append(row[category_index])
尚待测试。