我有這個 Json(還有......在代碼中間,它是為了減少這個問題中的 Json 數量,完整的 Json 在這里https://pastebin.com/acKCSq8D):
[
{
"columnHeader": {
"dimensions": [
"ga:city"
],
"metricHeader": {
"metricHeaderEntries": [
{
"name": "ga:users",
"type": "INTEGER"
}
]
}
},
"data": {
"rows": [
{
"dimensions": [
"(not set)"
],
"metrics": [
{
"values": [
"984"
]
}
]
},
{
"dimensions": [
"Sao Paulo"
],
"metrics": [
{
"values": [
"555"
]
}
]
},
...
{
"dimensions": [
"Xanxere"
],
"metrics": [
{
"values": [
"1"
]
}
]
}
],
...
}
}
]
我正在嘗試獲取專案“尺寸”和“值”,但使用以下代碼:
import json
import pandas as pd
with open('test.json') as f:
raw_json = json.load(f)
for i in raw_json:
print(i['data']['rows']['dimensions'])
我收到此錯誤:
Traceback (most recent call last):
File "C:\Users\gusta\Desktop\Projects\papai\test.py", line 10, in <module>
print(i['data']['rows']['dimensions'])
TypeError: list indices must be integers or slices, not str
我怎么能在不回傳這樣的錯誤的情況下提取這樣的值作為維度?
uj5u.com熱心網友回復:
行被解釋為串列,因此您還需要遍歷它們以提取維度。這是一個解決方案。
for i in raw_json:
for j in i['data']['rows']:
print(j['dimensions'])
uj5u.com熱心網友回復:
您的頂級是串列而不是字典。嘗試raw_json[0]訪問您的 dict 并從那里開始。
同樣,“行”訪問串列,您需要在那里建立索引而不是鍵入。
uj5u.com熱心網友回復:
如果您看到以下type(i['data']['rows'])內容list,則您將得到TypeError
In [260]: for i in raw_json:
...: print(type(i))
...: print(type(i['data']))
...: print(type(i['data']['rows']))
...: for j in i['data']['rows']:
...: # print(j['dimensions'])
...: # print(type(j))
...: pass
...:
<class 'dict'>
<class 'dict'>
<class 'list'>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/358428.html
