>백엔드 개발 >파이썬 튜토리얼 >Python 사전은 3.6에서 삽입 순서를 유지하도록 보장됩니까?

Python 사전은 3.6에서 삽입 순서를 유지하도록 보장됩니까?

Patricia Arquette
Patricia Arquette원래의
2024-12-20 19:37:141030검색

Are Python Dictionaries Guaranteed to Maintain Insertion Order in 3.6 ?

Python 3.6에서 사전이 주문됩니까?

Python 3.6부터 CPython 구현의 사전은 삽입 순서로 되어 있습니다. 즉, 순서가 유지됩니다. 삽입된 항목의 수입니다. 그러나 이 동작은 구현 세부 사항으로 간주되므로 이에 의존해서는 안 됩니다.

Python 3.7에서 보장된 삽입 순서

Python 3.7에서는 사전에 대한 삽입 순서가 표준이 되었습니다. 보장된 언어 기능. 이는 모든 준수 Python 구현이 삽입 순서 사전을 제공해야 함을 의미합니다.

삽입 순서를 통한 성능 개선

Python 3.6의 새로운 사전 구현은 두 가지를 유지하여 삽입 순서를 달성합니다. arrays:

  • dk_entries: 키와 값 항목을 순서대로 보관합니다. 삽입.
  • dk_indices: 해시 테이블 역할을 하는 dk_entries에 인덱스를 저장합니다.

이 설계는 필수 항목만 저장하고 희소한 인덱스 배열을 사용하여 메모리 오버헤드를 줄입니다. 이전 구현에서는 키와 값 항목의 희소 배열을 할당하여 빈 공간이 생겼습니다.

데이터 구조 시각화

예를 들어, 사전 { 'timmy': ' red', 'barry': 'green', 'guido': 'blue' } 가 저장됩니다. as:

indices = [None, 1, None, None, None, 0, None, 2]
entries = [[-9092791511155847987, 'timmy', 'red'],
           [-8522787127447073495, 'barry', 'green'],
           [-6480567542315338377, 'guido', 'blue']]

기존 디자인에서는 충돌을 최소화하기 위해 빈 공간이 많았습니다. 새로운 접근 방식은 희소성을 인덱스 배열로 이동하여 메모리 사용량을 줄입니다.

결론적으로 Python 3.6 사전의 삽입 순서는 메모리 효율성을 향상시키고 Python 구현 전체에서 사전의 안정성을 높이는 중요한 개선 사항입니다.

위 내용은 Python 사전은 3.6에서 삽입 순서를 유지하도록 보장됩니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.