код python для преобразования входных данных в переменную формата json

#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"]}}'