#python #json
#python #json
Вопрос:
Я изучаю Python, и у меня возникают некоторые проблемы с итерацией по файлу данных json, чтобы получить определенные ключи и значения. Я делаю это все время в PHP, но по какой-то причине нахожу это немного сложным в Python. Я попробовал несколько вещей из Stack Overflow, но чувствую, что здесь мне не хватает фундаментального. Любые предложения приветствуются.
Вот мои данные JSON, которые я загружаю из файла:
{
"pfcProductfeed": {
"productfeed": {
"models": [
{
"model": {
"modelCode": "1",
"description": "Product 1"
}
},
{
"model": {
"modelCode": "2",
"description": "Product 2"
}
},
{
"model": {
"modelCode": "3",
"description": "Product 3"
}
}
]
}
}
}
То, что я хочу сделать, это выполнить итерацию по каждой из «моделей» и отобразить код модели и описание для каждой модели в цикле. Я пробовал это:
import json
with open('data/stack.json') as f:
data = json.load(f)
models = data['pfcProductfeed']['productfeed']['models']
print(json.dumps(models, indent=4, sort_keys=True))
for model in models:
#print(json.dumps(model, indent=4, sort_keys=True))
print(model['description']) #How do I get at the keys, and their values
Но это сообщает об ошибке:
печать(модель [‘описание’]) #Как мне получить ключи и их значения KeyError: ‘description’
У кого-нибудь есть предложения о том, как правильно выполнить итерацию?
Большое спасибо
Джеймс
Комментарии:
1.
model['model']['description']
Ответ №1:
При использовании for model in models:
model является объектом массива. Значение для примера первого model
будет :
{
"model": {
"modelCode": "1",
"description": "Product 1"
}
}
Итак, если вы хотите распечатать ключи model
, у вас будет ['model']
Если вы хотите, чтобы вы model
были :
{
"modelCode": "1",
"description": "Product 1"
}
затем вы можете использовать
for model in models:
description = model['model']['description']
Ответ №2:
Смотрите ниже
data = {
"pfcProductfeed": {
"productfeed": {
"models": [
{
"model": {
"modelCode": "1",
"description": "Product 1"
}
},
{
"model": {
"modelCode": "2",
"description": "Product 2"
}
},
{
"model": {
"modelCode": "3",
"description": "Product 3"
}
}
]
}
}
}
models = data['pfcProductfeed']['productfeed']['models']
for model in models:
print(model['model']['description'])
вывод
Product 1
Product 2
Product 3
Комментарии:
1. Спасибо. Я предположил, что для модели в models: строка означает, что я уже на правильном уровне в данных. Я считаю, что именно так это работает, когда я делаю подобное в PHP. Спасибо за вашу помощь! Я попробую!