効率的な双方向ハッシュ テーブルの実装
ハッシュ テーブルまたはディクショナリ データ構造は、キーによる効率的なインデックス作成と値の取得を提供します。ただし、値によってインデックスを作成することが望ましい場合もあります。双方向ハッシュ テーブルでは、キーベースと値ベースの両方のインデックス作成が可能です。
双方向クラスを使用したカスタム実装
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 の柔軟性を組み合わせています。双方向アクセス。これは、値ベースのインデックス作成が必要なさまざまなアプリケーションにとって強力なツールです。
以上がPython の双方向ハッシュ テーブルを使用すると、どのようにして効率的なキーベースと値ベースのインデックス作成が可能になるのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。