すでに持っている(逆順)辞書の最初のN項目(キーペア)を使用して、新しい辞書を作成するだけです。たとえば、上位3つのアイテムを取得するには、次のようにします。
from collections import OrderedDict
from operator import itemgetter
# create dictionary you have
dictionary = {'a': 10, 'b': 20, 'c': 30, 'd': 5}
ordered = OrderedDict(sorted(dictionary.items(), key=itemgetter(1), reverse=True))
topthree = dict(ordered.items()[:3])
print(topthree) # -> {'a': 10, 'c': 30, 'b': 20}
Python 3の場合、そのバージョンでイテレータを返すため、dict(list(ordered.items())[:3])
使用できます。または、Python2と3の両方で機能するものをitems()
使用することもできます。dict(itertools.islice(ordered.items(), 3))
collections.Counter
また、結果は、質問で指定した通常の辞書であり、または他のタイプのマッピングではないことに注意してください。dictionary
このアプローチは非常に一般的であり、元の値が整数値である必要はありません。順序付けすることができます(つまり、key
関数を介して比較できます)。