2012-09-30 87 views
0

可能重複:
Get first N key pairs from an Ordered Dictionary to another one in python排序項n個條目

我有一個大字典。如何按降序對這些條目進行排序,然後打印前n個項目?要打印在字典中的分類項目中,我使用這個代碼:

print sorted(mydictionary.iteritems(), key=operator.itemgetter(1), reverse=True) 
+0

因此,基本上你問的是如何從列表中取出第n個項目?你研究並找不到任何東西? – delnan

+0

http://stackoverflow.com/questions/8287000/get-first-n-key-pairs-from-an-ordered-dictionary-to-another-one-in-python...Just發現這是一個重複的帖子,請刪除這篇文章。我無法。謝謝 –

+0

@JustinCarrey和'OrderedDict' ...不太一樣,有人說'OrderedDict' ...(雖然也許是另一個問題的重複) –

回答

2

可以打印,然後切片:

print sorted(mydictionary.items(), key=operator.itemgetter(1), reverse=True)[:10] 
5

您可以使用heapq.nlargest

import heapq 
print heapq.nlargest(n, mydictionary.iteritems()) 

通常這是大致相同的效率明智(如排序然後切片),但對於非常大的字典和小的n它稍快(分析將遵循)。它有易於閱讀的好處!

+1

「heapq.nlargest」的+1 - 但我想象一下小字典,速度更快,因爲timsort已經非常優化。當'最大'超過timsort +切片時,我很樂意看到這種時機。 – senderle

+1

OP在「大字典」這個問題上說過......我會在稍後的一些時間嘗試更新,因爲對於> 10000字典和小n,它看起來(稍微)更快,但它們非常重要。但是,它總是更具可讀性! –