簡體   English   中英

從 json 對象中獲取帶有鍵名的值

[英]Get values with the key names from json object

我正在嘗試從 python 列表對象的特定列中檢索值。 這是來自此處的日志分析 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
                ]
            ]
        }
    ]
}

有數百列,我想讀取特定的列和行值。 為此,我最初嘗試為例如“類別”的列查找索引並從行中檢索所有值。 這是我到目前為止所做的。

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])

順便說一句,還沒有測試過。

您還可以重構我們使用 filter 函數查找類別索引的第一個循環。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM