Проблема с добавлением пары ключ-значение к ключу в python

#python-3.x

#python-3.x

Вопрос:

В рамках цикла я пытаюсь добавить пару ключ-значение в мой файл json.

На первой итерации json-файл всегда пуст.

На второй итерации я хочу добавить новый ключ и значение в мои ключевые «статьи». Но это не работает. Я получаю проблему.

Спасибо за ваши подсказки!

проблема:

 list indices must be integers or slices, not set
  

мой подход:

 keywordJson = [{'articles': [{'id': filename, 'phrases': phrases}]}]

with open(json_path, "r ", encoding='utf-8') as json_file:
    if i == 0:
        json_decoded = keywordJson
        json.dump(keywordJson, json_file, ensure_ascii=False)       
    else:
        json_decoded = json.load(json_file)
        json_decoded[{"articles"}] = [{"id": filename, "phrases": phrases}]
        json.dump(json_decoded, json_file, ensure_ascii=False) 
  

Ответ №1:

Когда вы говорите [{"articles" : <whatever>}] , квадратные скобки указывают, что эта структура данных представляет собой список, содержащий один элемент, который является словарем. Таким образом, вам понадобится что-то вроде:

 json_decoded[0]["articles"] = [{"id": filename, "phrases": phrases}]
  

Однако я не уверен, что вы действительно хотите, чтобы все эти списки были там. Это может быть чище:

 keywordJson = {'articles': {'id': filename, 'phrases': phrases}}
  

И тогда код был бы:

 json_decoded["articles"] = {"id": filename, "phrases": phrases}