Python で双方向ハッシュ テーブルを実装するにはどうすればよいですか?

DDD
リリース: 2024-10-28 04:59:30
オリジナル
478 人が閲覧しました

How Can You Implement a Bidirectional Hash Table in Python?

Bidict クラスによる双方向ハッシュ テーブルの実装

双方向ハッシュ テーブルは、同じデータ内のキーと値の両方でインデックスを付ける機能を提供します構造。 Python のネイティブ辞書は、一方向のマッピングには貴重なデータ構造ですが、双方向の検索となると不十分です。この記事では、Python で双方向ハッシュ テーブルを実装する効率的な方法を紹介します。

実装の詳細

実装の中心となるのは、Python の標準辞書を拡張する bidict クラスです。 。このクラスは 2 つの辞書を維持します。1 つは標準のキーと値のマッピング用で、もう 1 つは値とキーのマッピング用の逆辞書です。

主な機能

bidict クラスが提供するものいくつかの注目すべき機能:

  • 逆引きディレクトリの自動更新: 標準辞書が変更されると (項目の追加、変更、または削除によって)、逆引き辞書自体が自動的に更新されます。
  • 同じ値のキーのリスト: 他の一部の双方向 dict 実装とは異なり、bidict では複数のキーが同じ値を持つことができます。
  • 効率的な検索:キーまたは値の取得は、ネイティブ Python 辞書実装を利用して一定時間で実行されます。

使用例

その機能を実証するために、bidict を作成しましょう

<code class="python">import numpy as np
bd = bidict(zip(['a', 'b'], np.random.randint(2, size=2)))
print(bd)  # {'a': 1, 'b': 0}
print(bd.inverse)  # {1: ['a'], 0: ['b']}</code>
ログイン後にコピー

キー 'a' の値を変更できます:

<code class="python">bd['a'] = 0
print(bd)  # {'b': 0, 'a': 0}
print(bd.inverse)  # {0: ['b', 'a']}</code>
ログイン後にコピー

変更を反映するために逆引き辞書が自動的に更新されることに注意してください。辞書から項目を削除することもできます。

<code class="python">del bd['a']
print(bd)  # {'b': 0}
print(bd.inverse)  # {0: ['b']}</code>
ログイン後にコピー

ここでも、逆辞書は削除にシームレスに調整します。

結論として、bidict クラスは双方向の効率的で便利な実装を提供します。 Python のハッシュ テーブル。自動更新の逆ディレクトリ、同じ値を持つ複数のキーのサポート、定数時間ルックアップを提供します。

以上がPython で双方向ハッシュ テーブルを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!