создание json с использованием списка списка - PullRequest
0 голосов
/ 04 апреля 2020

если у меня есть данные в этом формате

a=[(0,0,'customer',["Hi, I'm user"]),
 (0,1,'agent',['Hi Welcome']),
 (0, 2,'customer',["i would like to know"]),
 (0, 3, 'agent', ['Yes','Only credit']),
 (0, 4, 'customer', ['oic...','sub line?','is it?']),
 (0, 5, 'agent', ['no subline']),
 (0, 6, 'customer', ['oic...','by','bye']),
(1,0,'customer',["Hi, I'm user"]),
 (1,1,'agent',['Hi Welcome']),
 (1, 2,'customer',["i would like to know"]),
 (1, 3, 'agent', ['Yes','Only credit'])]

и необходимо преобразовать в json с форматом ниже

{
 0:
   {
       0:{
          'utterance': ["Hi, I'm use],
          'speaker': 'customer'
         },


       1:{
          'utterance': ['Hi Welcome'],
          'speaker': 'agent'
    ...  
       },
       6:{'utterance':['oic...','by','bye'],
           'speaker': 'customer'
         }
   }
   ...
1:{
       3: {
           'utterance':['Yes','Only credit'],
            'speaker':'agent'
           }
   } 




}

Я не могу получить требуемый словарь, как указано над. Любая помощь будет оценена?

1 Ответ

1 голос
/ 04 апреля 2020

Обычно я использую Pandas для преобразования списков в json, но эта структура довольно сложна. Таким образом, ручное решение будет:

a = [(0, 0, 'customer', ["Hi, I'm user"]),
     (0, 1, 'agent', ['Hi Welcome']),
     (0, 2, 'customer', ["i would like to know"]),
     (0, 3, 'agent', ['Yes', 'Only credit']),
     (0, 4, 'customer', ['oic...', 'sub line?', 'is it?']),
     (0, 5, 'agent', ['no subline']),
     (0, 6, 'customer', ['oic...', 'by', 'bye']),
     (1, 0, 'customer', ["Hi, I'm user"]),
     (1, 1, 'agent', ['Hi Welcome']),
     (1, 2, 'customer', ["i would like to know"]),
     (1, 3, 'agent', ['Yes', 'Only credit'])]

files = {}
for item in a:
    if not item[0] in files:
        files[item[0]] = {item[1]: {'utterance': item[2], 'speaker': item[3]}}
    else:
        val = files[item[0]]
        val[item[1]] = {'utterance': item[2], 'speaker': item[3]}
        files[item[0]] = val

print(files)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...