#python #python-3.x
#python #python-3.x
Вопрос:
У меня есть входная переменная (stud_id), список (sub_code) и массив (данные) со следующими значениями.
stud_id: 10
sub_code: ['002', '003', '007']
data: [array([['867192', '5545']], dtype=object), array([['964433', '0430']], dtype=object), array([['965686', '2099']], dtype=object)]
Как преобразовать приведенные выше входные данные в формат json следующим образом?
stud_id является основным ключом
output = '{ "10" : { "002" : [ 867192, 5545 ], '
' "003" : [ 964433, 0430 ], '
' "007" : [ 965686, 2099 ] } }'
Ответ №1:
Мне пришлось настроить тип вашего массива для тестирования.
Попробуйте этот код:
stud_id = 10
sub_code = ['002', '003', '007']
#data = [array([['867192', '5545']], dtype=object),
# array([['964433', '0430']], dtype=object),
# array([['965686', '2099']], dtype=object)]
data = [['867192', '5545'],
['964433', '0430'],
['965686', '2099']]
output = '{ "10" : { "002" : [ 867192, 5545 ], '
' "003" : [ 964433, 0430 ], '
' "007" : [ 965686, 2099 ] } }'
dd = {str(stud_id):{k:a for k,a in zip(sub_code, data)}}
print(dd)
Вывод
{'10': {'002': ['867192', '5545'], '003': ['964433', '0430'], '007': ['965686', '2099']}}
Ответ №2:
>>> import json
>>> from numpy import array
>>> stud_id = 10
>>> sub_code = ['002', '003', '007']
>>> data = [array([['867192', '5545']], dtype=object),
... array([['964433', '0430']], dtype=object),
... array([['965686', '2099']], dtype=object)]
>>> json.dumps({stud_id: dict(zip(sub_code, map(lambda arr: arr[0].tolist(), data)))})
'{"10": {"002": ["867192", "5545"], "003": ["964433", "0430"], "007": ["965686", "2099"]}}'
Ответ №3:
Zip sub_code
и data
, превратите их в dict с пониманием dict, затем поместите их в другой словарь с stud_id
помощью ключа as, затем сбросьте как json:
import json
json.dumps({stud_id: {k: v.tolist()[0] for (k, v) in zip(sub_code, data)}})
# '{"10": {"002": ["867192", "5545"], "003": ["964433", "0430"], "007": ["965686", "2099"]}}'