Как создать вложенный массив объектов JSON, используя Python?

1

Желаемый результат:

{"MainKey": 
   [{"key01":"value01","key02":"value02"},
    {"key11":"value11","key22":"value02"}
   ]
}

Код, который я пробовал:

data = {}
data2=[{}]

data2[0]['key01'] = 'value01'
data2[0]['key02']=  'value02'

data2[1]['key11'] = 'value11'  #index out of bounds error
data2[1]['key12']=  'value12'

data['MainKey']=data2

import json 
with open('try.json", 'w') as outfile:
 json.dump(data,outfile)

Но это дает ошибку индекса за пределами границ для второго набора значений в данных2. Как я могу это решить?

Теги:
arrays
python-3.x

2 ответа

2
Лучший ответ

Один из подходов состоит в том, чтобы создать число dict, использующего range.

Пример:

data = {}

data2 = [{} for i in range(2)]

data2[0]['key01'] = 'value01'
data2[0]['key02']=  'value02'

data2[1]['key11'] = 'value11'
data2[1]['key12']=  'value12'

data['MainKey']=data2
print(data)

Выход:

{'MainKey': [{'key01': 'value01', 'key02': 'value02'}, {'key12': 'value12', 'key11': 'value11'}]}
  • 0
    Спасибо, это хороший подход.
  • 0
    Пожалуйста, примите ответ, если это решило вашу проблему. Благодарю.
0

data2 - это список только с одним элементом, поэтому его индекс не может быть больше 0.

>>> data2=[{}]
>>> data2[0]['key01'] = 'value01'
>>> data2[0]['key02'] = 'value02'
>>> data2

[{'key01': 'value01', 'key02': 'value02'}]

  • 0
    Я понял, но как мне решить эту проблему и создать массив с n количеством {} элементов в data2?
  • 0
    data2 = [{} for i in range(n)]

Ещё вопросы

Сообщество Overcoder
Наверх
Меню