可能重複:
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)
可能重複:
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)
可以打印,然後切片:
print sorted(mydictionary.items(), key=operator.itemgetter(1), reverse=True)[:10]
您可以使用heapq.nlargest
:
import heapq
print heapq.nlargest(n, mydictionary.iteritems())
通常這是大致相同的效率明智(如排序然後切片),但對於非常大的字典和小的n
它稍快(分析將遵循)。它有易於閱讀的好處!
「heapq.nlargest」的+1 - 但我想象一下小字典,速度更快,因爲timsort已經非常優化。當'最大'超過timsort +切片時,我很樂意看到這種時機。 – senderle
OP在「大字典」這個問題上說過......我會在稍後的一些時間嘗試更新,因爲對於> 10000字典和小n,它看起來(稍微)更快,但它們非常重要。但是,它總是更具可讀性! –
因此,基本上你問的是如何從列表中取出第n個項目?你研究並找不到任何東西? – delnan
http://stackoverflow.com/questions/8287000/get-first-n-key-pairs-from-an-ordered-dictionary-to-another-one-in-python...Just發現這是一個重複的帖子,請刪除這篇文章。我無法。謝謝 –
@JustinCarrey和'OrderedDict' ...不太一樣,有人說'OrderedDict' ...(雖然也許是另一個問題的重複) –