Невозможно получить доступ к словарю в нескольких вложенных словарях из-за ошибки кортежа - PullRequest
3 голосов
/ 27 февраля 2020

У меня есть датафрейм с именем output, который выглядит как -

output
Out[48]: 
({'results': [{'alternatives': [{'confidence': 0.82,
      'transcript': 'thank you for calling a AA health insurance my name is Dick right the pleasure of speaking with '}],
    'final': True},
   {'alternatives': [{'confidence': 0.57, 'transcript': 'hi Nick this is '}],
    'final': True},
   {'alternatives': [{'confidence': 0.78,
      'transcript': 'hi Julie I think we talked earlier we did '}],
    'final': True},
  {'alternatives': [{'confidence': 0.86,
      'transcript': "thing else comes up or you have any questions just don't hesitate to call us okay okay thank you so much yeah you're very welcome you have a great rest your day okay you too bye bye "}],
    'final': True}],
  'result_index': 0},)

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

output.to_csv("script.csv")
Traceback (most recent call last):

  File "<ipython-input-44-85a7c839323b>", line 1, in <module>
    output.to_csv("script.csv")

AttributeError: 'tuple' object has no attribute 'to_csv'

Я также пытался просто получить доступ к расшифровке, но я получил ту же ошибку ниже -

print(output['results'][0]['alternatives'][0]['transcript'])

Traceback (most recent call last):

  File "<ipython-input-49-03a8e1a518ee>", line 1, in <module>
    print(output['results'][0]['alternatives'][0]['transcript'])

TypeError: tuple indices must be integers or slices, not str

Как мне избежать этой ошибки?

Ответы [ 2 ]

2 голосов
/ 27 февраля 2020

Вы можете создать pandas DataFrames из списка словарей. Предполагая, что вам нужны только самые внутренние элементы, вы можете использовать понимание, чтобы получить его:

df = pd.DataFrame([i for elts in output for alts in elts['results'] for i in alts['alternatives']])

Вы получите следующий DataFrame:

   confidence                                         transcript
0        0.82  thank you for calling a AA health insurance my...
1        0.57                                   hi Nick this is 
2        0.78         hi Julie I think we talked earlier we did 
3        0.86  thing else comes up or you have any questions ...
0 голосов
/ 27 февраля 2020

Выход является кортежем из одного элемента. Сначала получите доступ к одному элементу

>>> type(output)
<type 'tuple'>
>>> len(output)
1
>>> results = output[0]
>>> type(results)
<type 'dict'>
>>> results['results'][0]['alternatives'][0]['transcript']
'thank you for calling a AA health insurance my name is Dick right the pleasure of speaking with '
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...