finding top k largest keys in a dictionary python
return sorted(dictionary, key=dictionary.get, reverse=True)[:10]
Should be at worst O(NlogN)
(although heapq
proposed by others is probably better) ...
It might also make sense to use a Counter
instead of a regular dictionary. In that case, the most_common
method will do (approximately) what you want (dictionary.most_common(10)
), but only if it makes sense to use a Counter
in your API.
O(n log k)
:
import heapq
k_keys_sorted = heapq.nlargest(k, dictionary)
You could use key
keyword parameter to specify what should be used as a sorting key e.g.:
k_keys_sorted_by_values = heapq.nlargest(k, dictionary, key=dictionary.get)