2012-09-30 2 views
0

가능한 중복 엔트리는 :정렬 첫 번째 순서 및 인쇄를 감소에서 사전의 항목 N


Get first N key pairs from an Ordered Dictionary to another one in python

나는 큰 사전을 가지고있다. 해당 항목을 내림차순으로 정렬 한 다음 첫 번째 항목을 어떻게 인쇄합니까? 그런 다음 조각을 인쇄 할 수 있습니다

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'에 관한 것입니다. (아마도 다른 질문의 중복이긴하지만) –

답변

2

: 사전에 분류 항목을 인쇄하려면,이 코드를 사용하고

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

당신은 사용할 수 있습니다 heapq.nlargest :

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

보통이 (정렬 후 슬라이스 할 때와 같은) 효율성이 현저하지만, 매우 큰 사전의 경우 작은 의 경우 약간 빨라집니다 (따라야 할 분석). 읽기 쉽다는 이점이 있습니다!

+1

+1은'heapq.nlargest'입니다. -하지만 작은 사전은 상상할 수 있습니다. timsort가 너무 많이 최적화되어 있기 때문에 빠릅니다. 나는'nlargest'가 timsort + slicing을 능가 할 때 이것을 보여주는 몇 가지 타이밍을보고 싶습니다. – senderle

+1

OP는 "큰 사전"이라는 질문에서 말합니다 ... 저는 나중에 10000 개 이상의 사전에 대해 약간의 타이밍을 시도하고 업데이트 할 것입니다. 그러나 약간은 더 빠르게 보일 것입니다. 그러나 그것들은 대부분 muchness입니다. 그러나 항상 더 읽기 쉽습니다! –

관련 문제