Получить ключ и значение словаря для макс N значений словаря - PullRequest
0 голосов
/ 11 октября 2018

Я видел много постов, в которых используется следующее:

sorted(iterable, key=keyfunc, reverse=True)[0]

Но как мне получить и ключ, и значение?

Выше приведен только ключ.

Должен ли я получить ключи и выполнить итерацию, как в приведенном ниже коде, или есть более простой способ сделать это?

topn_dict = sorted(similarity_dict, key=similarity_dict.get, reverse=True)[:5]
topn_pairs = {k: similarity[k] for k in topn_dict}
print (topn_pairs)

Редактировать:

similarity_dict = {a: 5.1, b: 4.99, c: 8.72, d: 6.34, e: 2.3, f: 9.1}

I would like the output as following for top 3:
f - 9.1
c - 8.72
d - 6.34

1 Ответ

0 голосов
/ 11 октября 2018

вы можете сортировать и воссоздавать дикт непосредственно:

topn_dict = dict(sorted(similarity.items(), key=lambda x: x[1], reverse=True))

без явного key (или key=lambda x: x[0]) это будет сортировать по ключам;версия выше сортирует значения.

обратите внимание, что dict s сортируются только на python> = 3.?.в старых версиях dict s все равно не сортируется.( обновление от DeepSapce : начиная с Python 3.7 вы можете положиться на это.)

для вашего примера вы можете использовать:

topn_dict = dict(sorted(similarity_dict.items(), key=lambda x: x[1], 
                        reverse=True)[:5])
print(topn_dict)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...