효율적인 양방향 해시 테이블 구현
해시 테이블 또는 사전 데이터 구조는 키별로 효율적인 인덱싱 및 값 검색을 제공합니다. 그러나 때로는 값으로 색인을 생성하는 것이 바람직할 때도 있습니다. 양방향 해시 테이블은 키 기반 및 값 기반 인덱싱을 모두 허용합니다.
양방향 클래스를 사용한 사용자 정의 구현
Python dict 구현은 키에서 단방향 매핑을 제공합니다. 가치에. 양방향 해시 테이블을 생성하려면 dict 클래스에서 상속되는 자체 클래스를 생성할 수 있습니다.
<code class="python">class bidict(dict): def __init__(self, *args, **kwargs): super(bidict, self).__init__(*args, **kwargs) self.inverse = {} for key, value in self.items(): self.inverse.setdefault(value, []).append(key) def __setitem__(self, key, value): if key in self: self.inverse[self[key]].remove(key) super(bidict, self).__setitem__(key, value) self.inverse.setdefault(value, []).append(key) def __delitem__(self, key): self.inverse.setdefault(self[key], []).remove(key) if self[key] in self.inverse and not self.inverse[self[key]]: del self.inverse[self[key]] super(bidict, self).__delitem__(key)</code>
주요 기능:
사용 예:
<code class="python">bd = bidict({'a': 1, 'b': 2}) print(bd) # {'a': 1, 'b': 2} print(bd.inverse) # {1: ['a'], 2: ['b']} bd['c'] = 1 # Two keys have the same value print(bd) # {'a': 1, 'c': 1, 'b': 2} print(bd.inverse) # {1: ['a', 'c'], 2: ['b']}</code>
장점:
이 구현은 Python의 dict 데이터 구조의 효율성과 다음의 유연성을 결합합니다. 양방향 액세스. 값 기반 인덱싱이 필요한 다양한 애플리케이션을 위한 강력한 도구입니다.
위 내용은 Python의 양방향 해시 테이블은 어떻게 효율적인 키 및 값 기반 인덱싱을 가능하게 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!