2010-12-29 4 views
54

에 의해 정렬 된 DICT에서 값 쌍 나는 단지 (쌍은 키으로 분류되어 있습니다)를 딕셔너리의 키/값 쌍을 인쇄하려면 다음과 같은 코드가 있습니다 그러나순회 키 이상/키

for word, count in sorted(count_words(filename).items()): 
    print word, count 

을, 대신 items()iteritems() 하나는 내가이 상황에서 선택해야 동일한 출력 지금

을 생산 호출? 나는 Python tutorial과상의했지만 실제로 내 질문에는 답하지 않습니다.

답변

76

파이썬 2.x에서는 둘 모두 동일한 결과를 제공합니다. 그 차이점은 items은 사전의 전체 내용을 포함하는 목록을 구성하는 반면 iteritems은 한 번에 하나씩 항목을 가져 오는 반복자를 제공한다는 것입니다. 많은 메모리를 필요로하지 않기 때문에 일반적으로 iteritems이 더 나은 선택입니다. 하지만 여기에서는 결과를 정렬하므로이 상황에서 큰 차이가 없을 것입니다. 의심이가는 경우 iteritems 안전한 내기입니다. 성능이 정말로 중요한 경우 두 가지를 모두 측정하고 어느 것이 더 빠르는지 확인하십시오.

파이썬 3.x iteritems이 제거되었고 items은 이제 iteritems이 수행 한 작업을 수행하므로 프로그래머가 시간을 낭비하는 대신 더 나은 것이 무엇인지 걱정해야합니다. :)

참고 사항 : 단어의 출현을 계산하는 경우 평이한 dict (파이썬 2.7 이상 필요) 대신 collections.Counter을 사용하는 것이 좋습니다.

+0

+1 와우! 나는 이런 존재를 몰랐다. 매우 편리! – helpermethod

+7

3.x에서 iteritems deprecation을 언급 한 +1 –

10

마크 답변에 따라 : 파이썬 2에서는 iteritems()을, 파이썬 3에서는 items()을 사용하십시오.

그리고 추가로; 두 가지를 모두 지원해야한다면 (2to3을 사용하지 마십시오)

counts = count_words(filename) 
for word in sorted(counts): 
    count = counts[word]