同じ値を持つ複数のキーに対して Python で双方向ハッシュ テーブルを実装するにはどうすればよいですか?

Susan Sarandon
リリース: 2024-10-29 12:06:29
オリジナル
581 人が閲覧しました

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

Python での双方向ハッシュ テーブルの実装

Python の組み込み dict は、キーに基づいた効率的な検索を提供する非常に便利なデータ構造です。ただし、値からの逆引きが必要な場合が発生します。この記事では、双方向ハッシュ テーブルを実装する最も効率的な方法を検討し、既存のソリューションからインスピレーションを受け、特定の要件に対処するために変更された例を提供します。

実装

提示されたソリューション標準の Python の dict を拡張するカスタム クラスの bidict を使用します。これは、bidict が変更されるたびに自動的に更新される追加の逆辞書を維持します。この逆辞書は、その値が割り当てられているキーのリストに値をマップします。

重要なことに、既存のライブラリとは異なり、この実装では同じ値を持つ複数のキーが許可されます。この機能は、特定のシナリオでは非常に重要です。

使用法

bidict クラスは、次の主要なメソッドを使用します。

  1. bidict(args, kwargs) ): 標準辞書および逆辞書に格納されている引数とキーワード引数を受け入れるコンストラクター。
  2. bidict.__setitem__(key, value): キーを値に設定します。 key がすでに bidict にある場合は、逆引き辞書内の現在の値に関連付けられているキーのリストから key を削除します。次に、キーを両方のディクショナリの値に設定し、逆ディクショナリ内の値に関連付けられたキーのリストを更新します。
  3. bidict.__delitem__(key): bidict からキーを削除します。これは、キーに関連付けられた値を見つけて、それに応じて逆辞書を更新し、値に関連付けられたキーのリストからキーを削除します。 value のキーのリストが空になると、value は逆辞書から削除されます。

使用例

<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 中国語 Web サイトの他の関連記事を参照してください。

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