development

키별로 정렬 된 사전의 키 / 값 쌍 반복

big-blog 2020. 12. 30. 20:16
반응형

키별로 정렬 된 사전의 키 / 값 쌍 반복


dict에 키 / 값 쌍을 인쇄하는 다음 코드가 있습니다 (쌍은 키별로 정렬 됨).

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

그러나 iteritems()대신 호출 items()하면 동일한 출력 생성됩니다.

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

이제이 상황에서 어떤 것을 선택해야합니까? 나는 상담 파이썬 자습서를 하지만 정말 내 질문에 대답하지 않습니다.


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

Python 3.x iteritems에서는 제거되었으며 items이제는 iteritems예전 처럼 하던 일을 수행하여 프로그래머가 어느 것이 더 나은지 고민하는 데 시간을 낭비하는 문제를 해결합니다. :)

참고로, 단어의 발생 횟수를 계산하는 경우 collections.Counter일반 사전 대신 사용을 고려할 수 있습니다 (Python 2.7 이상 필요).


Marks 답변에 따라 : Python 2에서는을 사용 iteritems()하고 Python 3에서는 items().

그리고 추가로; 두 가지를 모두 지원하고 사용하지 않으면 2to3다음을 사용하십시오.

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

참조 URL : https://stackoverflow.com/questions/4550645/iterating-over-key-value-pairs-in-a-dict-sorted-by-keys

반응형