이 글에서는 Python의 Dictionary items() 시리즈 함수의 사용법을 주로 소개합니다. 매우 실용적인 기능입니다. 필요한 친구들이 참고할 수 있습니다. 예제가 포함된 Python의 사전 items() 함수 시리즈는 Python 프로그래밍에 대한 좋은 참조 값을 가지고 있습니다. 구체적인 분석은 다음과 같습니다.
먼저 예를 살펴보겠습니다.
import html # available only in Python 3.x def make_elements(name, value, **attrs): keyvals = [' %s="%s"' % item for item in attrs.items()] attr_str = ''.join(keyvals) element = '<{name}{attrs}>{value}</{name}>'.format( name = name, attrs = attr_str, value = html.escape(value)) return element make_elements('item', 'Albatross', size='large', quantity=6) make_elements('p', '<spam>')
이 프로그램의 기능은 매우 간단합니다.
HTML 태그를 생성하는 것입니다. html 모듈은 Python 3에서만 사용할 수 있습니다. .x만 존재합니다. 처음에는
속성태그를 생성하는 keyval의 사전 유형 변수 가 흥미로운 방식으로 구성된다는 사실을 발견했습니다. 항목이 있어서 관련 정보를 확인해보니 많은 내용을 알게 되었는데, 여기에 정리해보겠습니다. 참고: 아래의 모든 Python 인터프리터에서 사용되는 버전의 경우 2.x는 2.7.3에 해당하고 3.x는 3.4.1에 해당합니다.
Python 2.x에서 공식 문서의 항목 방법은 다음과 같습니다. 다음과 같이 (키, 값) 쌍 목록을 생성합니다.>>> d = {'size': 'large', 'quantity': 6} >>> d.items() [('quantity', 6), ('size', 'large')]
을 검색하는 과정에서 우연히 stackoverflow에서 다음과 같은 질문을 보았습니다. dict.items()와 dict.iteritems()의 차이점은 무엇입니까? , 첫 번째 대답은 대략 다음과 같습니다. "처음에는 items()가 위와 같이 dict의 모든 요소를 포함하는 목록을 반환했지만 이는 메모리를 너무 낭비하기 때문에 나중에 추가되었습니다( 참고: Python 2.2에서 나타나기 시작한 iteritems(), iterkeys() 및 itervalues() 함수 그룹은 메모리를 절약하기 위해 반복자를 반환하는 데 사용되지만 3.x에서는 items() 자체가 이러한 반복자를 반환합니다. 🎜> 3.x의 items() 동작은 2.x의 iteritems() 동작과 일치하며 iteritems() 함수는 폐지됩니다.”
그렇지만 이것이 더 흥미롭습니다. 답변이 승인되었지만 아래 의견에서는 3.x의 items() 동작이 2.x의 iteritems()와 다르다는 점을 지적했습니다. 실제로는 " 전체 시퀀스 프로토콜 객체를 반환합니다. ", 이
객체는 dict의 변경 사항을 반영할 수 있습니다. 나중에 또 다른 함수 viewitems()가 Python 2.7에 추가되었고 이 동작은 3.x에서 일관성을 유지하기 위해 의견을 듣고, 테스트에 사용된 Python 버전에 주의하면서 다음 테스트를 수행했습니다. 테스트 1(Python 2.7.3):
Python 2.7.3 (default, Feb 27 2014, 19:58:35) [GCC 4.6.3] on linux2 Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() >>> vi = d.viewitems() >>> il [('quantity', 6), ('size', 'large')] >>> it <dictionary-itemiterator object at 0x7fe555159f18> >>> vi dict_items([('quantity', 6), ('size', 'large')])
Python 3.4.1 (default, Aug 12 2014, 16:43:01) [GCC 4.9.0] on linux Type "help", "copyright", "credits" or "license" for more information. >>> d = {'size': 'large', 'quantity': 6} >>> il = d.items() >>> it = d.iteritems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'iteritems' >>> vi = d.viewitems() Traceback (most recent call last): File "<stdin>", line 1, in <module> AttributeError: 'dict' object has no attribute 'viewitems' >>> il dict_items([('size', 'large'), ('quantity', 6)])
Python 3.x에서는 iteritems()와 viewitems() 두 가지 메서드가 폐지되었으며 item()의 결과가 2.x의 viewitems()와 일치하는 것을 볼 수 있습니다.
2.x에서 iteritems() 및 viewitems()에 의해 반환된 콘텐츠는 아래와 같이 for를 사용하여 탐색할 수 있습니다.>>> for k, v in it: ... print k, v ... quantity 6 size large >>> for k, v in vi: ... print k, v ... quantity 6 size large
>>> it = d.iteritems() >>> vi = d.viewitems() >>> d['newkey'] = 'newvalue' >>> d {'newkey': 'newvalue', 'quantity': 6, 'size': 'large'} >>> vi dict_items([('newkey', 'newvalue'), ('quantity', 6), ('size', 'large')]) >>> it <dictionary-itemiterator object at 0x7f50ab898f70> >>> for k, v in vi: ... print k, v ... newkey newvalue quantity 6 size large >>> for k, v in it: ... print k, v ... Traceback (most recent call last): File "<stdin>", line 1, in <module> RuntimeError: dictionary changed size during iteration
정리하자면, 2.x에서는 원래 items() 메소드를 사용했지만, 메모리 낭비가 너무 심해서 iterator를 반환하는 iteritems() 메소드가 추가되었습니다. items() 메소드가 추가되었습니다. ()의 동작이 뷰 객체를 반환하도록 수정되었으므로, 반환된 객체는 원래 사전의 변경 사항도 반영할 수 있습니다. 동시에 viewitems()의 이전 버전과의 호환성 기능도 추가되었습니다. 2.7에서.
그래서 3.x에서는 items() 메소드가 하나만 유지되므로 세 가지의 차이점에 대해 걱정할 필요가 없습니다. 이 기사에 설명된 예제는 모든 사람의 Python 프로그래밍에 대한 특정 참조 가치가 있다고 믿습니다.
【관련 추천사항】
1.
특별 추천
: "php Programmer Toolbox" V0.1 버전 다운로드2. 무료 Python 동영상 튜토리얼
3. Python 기본 소개를 위한 Items() 메서드
위 내용은 Python의 items() 시리즈 함수 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!