반응형
질문
아래의 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()
와 같이 작동합니다.
반응형
댓글