> 백엔드 개발 > 파이썬 튜토리얼 > Python에서 기본값을 사용하여 순서가 지정된 사전을 어떻게 만들 수 있나요?

Python에서 기본값을 사용하여 순서가 지정된 사전을 어떻게 만들 수 있나요?

Linda Hamilton
풀어 주다: 2024-10-28 03:37:30
원래의
423명이 탐색했습니다.

How can I create an ordered dictionary with default values in Python?

Ordered Default Dict에 대한 OrderedDict와 defaultdict 결합

OrderedDict와 defaultdict는 Python 컬렉션 모듈의 두 가지 강력한 데이터 구조입니다. OrderedDict는 요소의 순서를 유지하는 반면 defaultdict는 누락된 키에 대한 기본값을 제공합니다. 그러나 이러한 기능을 단일 데이터 구조로 결합하는 것은 어려울 수 있습니다.

DefaultOrderedDict를 사용한 사용자 정의 구현

가능한 해결책 중 하나는 다음을 상속하는 DefaultOrderedDict라는 사용자 정의 클래스를 생성하는 것입니다. OrderedDict 및 기본값 기능을 추가합니다. 다음은 Stack Overflow 답변에서 영감을 받은 구현입니다.

<code class="python">from collections import OrderedDict, Callable

class DefaultOrderedDict(OrderedDict):
    # Source: http://stackoverflow.com/a/6190500/562769
    def __init__(self, default_factory=None, *a, **kw):
        if (default_factory is not None and
           not isinstance(default_factory, Callable)):
            raise TypeError('first argument must be callable')
        OrderedDict.__init__(self, *a, **kw)
        self.default_factory = default_factory

    # Override __getitem__ to handle missing keys
    def __getitem__(self, key):
        try:
            return OrderedDict.__getitem__(self, key)
        except KeyError:
            return self.__missing__(key)

    # Raise KeyError if no default factory is provided
    def __missing__(self, key):
        if self.default_factory is None:
            raise KeyError(key)
        self[key] = value = self.default_factory()
        return value

    # ... (additional methods and overrides for copy, deepcopy, and repr)</code>
로그인 후 복사

이 DefaultOrderedDict 클래스는 OrderedDict와 defaultdict의 기능을 결합하여 요소에 대한 순서화된 액세스를 허용하고 누락된 키에 대한 기본값을 제공합니다.

위 내용은 Python에서 기본값을 사용하여 순서가 지정된 사전을 어떻게 만들 수 있나요?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿