동일한 값을 가진 여러 키에 대해 Python에서 양방향 해시 테이블을 구현하는 방법은 무엇입니까?

Susan Sarandon
풀어 주다: 2024-10-29 12:06:29
원래의
627명이 탐색했습니다.

How to Implement a Bidirectional Hash Table in Python for Multiple Keys with the Same Value?

Python에서 양방향 해시 테이블 구현

Python에 내장된 dict는 키를 기반으로 효율적인 조회를 제공하는 매우 유용한 데이터 구조입니다. 그러나 값에서 역방향 조회가 필요한 상황이 발생합니다. 이 기사에서는 양방향 해시 테이블을 구현하는 가장 효율적인 방법을 살펴보고 기존 솔루션에서 영감을 얻고 특정 요구 사항을 해결하도록 수정된 예를 제공합니다.

구현

제시된 솔루션 표준 Python의 사전을 확장하는 사용자 정의 클래스 입찰자를 사용합니다. 이는 입찰이 수정될 때마다 자동으로 업데이트되는 추가 역 사전을 유지 관리합니다. 이 역 사전은 해당 값이 할당된 키 목록에 값을 매핑합니다.

중요한 점은 기존 라이브러리와 달리 이 구현에서는 동일한 값을 가진 여러 키를 허용한다는 것입니다. 이 기능은 특정 시나리오에서 매우 중요합니다.

사용

bidic 클래스는 다음과 같은 주요 방법을 사용합니다.

  1. bidic(args, kwargs) ): 표준 dict 및 inverse 사전에 저장된 인수 및 키워드 인수를 허용하는 생성자.
  2. bidic.__setitem__(key, value): 키를 값으로 설정합니다. 키가 이미 입찰에 있으면 역 사전의 현재 값과 연결된 키 목록에서 키를 제거합니다. 그런 다음 키를 두 사전의 값으로 설정하여 역사전의 값과 연관된 키 목록을 업데이트합니다.
  3. bidict.__delitem__(key): bidict에서 키를 제거합니다. 키와 연관된 값을 찾고 그에 따라 역사전을 업데이트하여 값과 연관된 키 목록에서 키를 제거합니다. 값의 키 목록이 비어 있으면 값이 역사전에서 제거됩니다.

사용 예

<code class="python">bd = bidict({'a': 1, 'b': 2})  
print(bd.inverse)  # {1: ['a'], 2: ['b']}
bd['c'] = 1 
print(bd.inverse)  # {1: ['a', 'c'], 2: ['b']}
del bd['c']
print(bd.inverse)  # {1: ['a'], 2: ['b']}</code>
로그인 후 복사

위 내용은 동일한 값을 가진 여러 키에 대해 Python에서 양방향 해시 테이블을 구현하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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