Вложенные в Python диктуют лучшие значения N с максимальной достоверностью

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

{ 
"name1" : { "title":"someTitle", "confidence" : 0.765 },
"name2" : { "title":"someTitle2", "confidence" : 0.9343 },
"name3" : { "title":"someTitle3", "confidence" : 0.0031 },
"name4" : { "title":"someTitle4", "confidence" : 0.23 },
"name5" : { "title":"someTitle5", "confidence" : 0.8768 }
}

Из такого диктанта мне нужно создать еще один аналогичный диктат, содержащий только значения с самым высоким значением достоверности. В этом случае это должно быть: name2, name5, name1.

{ 
"name1" : { "title":"someTitle", "confidence" : 0.765 },
"name2" : { "title":"someTitle2", "confidence" : 0.9343 },
"name5" : { "title":"someTitle5", "confidence" : 0.8768 }
}

Структура и содержание Dict должны быть сохранены.

Спасибо!

2 ответа

Решение
dict(sorted(d1.items(), key=lambda item: item[1]['confidence'])[-3:])

Если ваш первоначальный словарь был сохранен как переменная d:

d_new = {name: x for name, x in d.iteritems() if x['confidence']>=.765}
Другие вопросы по тегам