Ответ Ch3steR работает, но я хотел бы предложить решение с pandas
, которое является библиотекой для анализа данных (с использованием объектов DataFrame, которые позволяют легко манипулировать данными).
В вашем примере, давайте просто возьмем соответствующую часть примера:
emotions = [{'Confidence': 22.537073135375977, 'Type': 'ANGRY'},
{'Confidence': 1.3983955383300781, 'Type': 'SAD'},
{'Confidence': 1.2260702848434448, 'Type': 'DISGUSTED'},
{'Confidence': 2.291703939437866, 'Type': 'FEAR'},
{'Confidence': 8.114240646362305, 'Type': 'HAPPY'},
{'Confidence': 10.546235084533691, 'Type': 'SURPRISED'},
{'Confidence': 18.409439086914062, 'Type': 'CALM'},
{'Confidence': 35.47684097290039, 'Type': 'CONFUSED'}]
Это можно привести к объекту pandas DataFrame:
import pandas as pd
pd.DataFrame(emotions)
выход
Confidence Type
0 22.537073 ANGRY
1 1.398396 SAD
2 1.226070 DISGUSTED
3 2.291704 FEAR
4 8.114241 HAPPY
5 10.546235 SURPRISED
6 18.409439 CALM
7 35.476841 CONFUSED
Этот объект может быть отсортирован по любому столбцу (например, по доверию), с помощью метода .sort_values
последние две (или любое другое число) строк можно выбрать с помощью метода .tail(2)
, и, наконец, можно выбрать столбец «Тип». Подведем итоги:
pd.DataFrame(emotions).sort_values('Confidence').tail(2)['Type'].values
дает
array(['ANGRY', 'CONFUSED'], dtype=object)
Если вы хотите верхнюю 1, а не верхнюю n (для n> 1), поиск и поиск быстрее и проще максимум вместо сортировки:
emotions.loc[emotions['Confidence'].idxmax(),'Type']
приводит к
'CONFUSED'
Это не быстрее, чем ответ Ch3steR, но код более прост (если вы знаете библиотеку pandas) и легко «масштабировать» до более сложного анализа данных, который вам может понадобиться позже.