如何在 Python 中實現雙向哈希表?

DDD
發布: 2024-10-28 04:59:30
原創
478 人瀏覽過

How Can You Implement a Bidirectional Hash Table in Python?

使用Bidict 類別實現雙向雜湊表

雙向雜湊表提供了按相同資料中的鍵和值進行索引的能力結構。 Python 的原生字典對於單向映射來說是一種很有價值的資料結構,但在雙向查找方面卻存在不足。本文介紹了一種在 Python 中實作雙向雜湊表的有效方法。

實作細節

實作的核心是 bidict 類,它擴充了 Python 的標準字典。這個類別維護兩個字典:一個用於標準鍵值映射,另一個用於值鍵映射的逆字典。

主要功能

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中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板
關於我們 免責聲明 Sitemap
PHP中文網:公益線上PHP培訓,幫助PHP學習者快速成長!