본문 바로가기
Python/Python FAQ

Python dict.items()와 dict.iteritems()의 차이점은 무엇인가요?, What is the difference between dict.items() and dict.iteritems() in Python2?

by 베타코드 2023. 7. 10.
반응형

질문


아래의 HTML을 한국어로 번역하되, HTML 태그와 태그 안에 있는 텍스트는 영어로 유지해주세요.

dict.items()dict.iteritems() 사이에 적용 가능한 차이가 있을까요?

Python 문서에서:

dict.items(): (키, 값) 쌍의 목록을 딕셔너리의 복사본으로 반환합니다.

dict.iteritems(): 딕셔너리의 (키, 값) 쌍에 대한 반복자를 반환합니다.

아래의 코드를 실행하면, 각각 동일한 객체에 대한 참조를 반환하는 것 같습니다. 놓친 미묘한 차이가 있을까요?

#!/usr/bin/python

d={1:'하나',2:'둘',3:'셋'}
print 'd.items():'
for k,v in d.items():
   if d[k] is v: print '\t같은 객체입니다.' 
   else: print '\t다른 객체입니다.'

print 'd.iteritems():'   
for k,v in d.iteritems():
   if d[k] is v: print '\t같은 객체입니다.' 
   else: print '\t다른 객체입니다.'   

결과:

d.items():
    같은 객체입니다.
    같은 객체입니다.
    같은 객체입니다.
d.iteritems():
    같은 객체입니다.
    같은 객체입니다.
    같은 객체입니다.

답변


그것은 진화의 일부입니다.

원래 Python items()는 실제로 튜플의 목록을 만들고 반환했습니다. 그것은 많은 추가 메모리를 사용할 수 있었습니다.

그런 다음, 일반적으로 언어에 발생기가 도입되었고, 해당 메서드는 iteritems()라는 반복자-생성기 메서드로 다시 구현되었습니다. 원본은 하위 호환성을 위해 남아 있습니다.

Python 3의 변경 사항 중 하나는 items()가 이제 뷰를 반환하고 list가 완전히 구축되지 않는다는 것입니다. iteritems() 메서드도 사라졌으며, Python 3의 items()는 Python 2.7의 viewitems()와 같이 작동합니다.

반응형

댓글