キーパスを使用してネストされた辞書から値を取得しますdict
。
json = {
"app": {
"Garden": {
"Flowers": {
"Red flower": "Rose",
"White Flower": "Jasmine",
"Yellow Flower": "Marigold"
}
},
"Fruits": {
"Yellow fruit": "Mango",
"Green fruit": "Guava",
"White Flower": "groovy"
},
"Trees": {
"label": {
"Yellow fruit": "Pumpkin",
"White Flower": "Bogan"
}
}
}
メソッドへの入力パラメーターは、ドットで区切られたキーパスであり、キーパス= "app.Garden.Flowers.white Flower"から 'Jasmine'を出力する必要があります。これまでの私のコード:
import json
with open('data.json') as data_file:
j = json.load(data_file)
def find(element, JSON):
paths = element.split(".")
# print JSON[paths[0]][paths[1]][paths[2]][paths[3]]
for i in range(0,len(paths)):
data = JSON[paths[i]]
# data = data[paths[i+1]]
print data
find('app.Garden.Flowers.White Flower',j)
とても近い。(コメントにあるように)メインのJSONオブジェクトを再帰的に処理する必要があります。最も外側のキー/値の結果を保存し、パスを外れるまでそれを使用して次のキー/値などを取得することで、これを実現できます。
def find(element, JSON):
paths = element.split(".")
data = JSON
for i in range(0,len(paths)):
data = data[paths[i]]
print data
ただし、KeyErrorに注意する必要があります。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加