Wie können Sie eine bidirektionale Hash-Tabelle in Python implementieren?

DDD
Freigeben: 2024-10-28 04:59:30
Original
478 Leute haben es durchsucht

How Can You Implement a Bidirectional Hash Table in Python?

Bidirektionale Hash-Tabellenimplementierung mit Bidict-Klasse

Bidirektionale Hash-Tabellen bieten die Möglichkeit, innerhalb derselben Daten sowohl nach Schlüsseln als auch nach Werten zu indizieren Struktur. Das native Wörterbuch von Python ist eine wertvolle Datenstruktur für die unidirektionale Zuordnung, reicht jedoch nicht aus, wenn es um die bidirektionale Suche geht. Dieser Artikel stellt eine effiziente Möglichkeit zur Implementierung einer bidirektionalen Hash-Tabelle in Python vor.

Implementierungsdetails

Das Herzstück der Implementierung ist die Bidict-Klasse, die das Standardwörterbuch von Python erweitert . Diese Klasse verwaltet zwei Wörterbücher: eines für die standardmäßige Schlüssel-Wert-Zuordnung und ein weiteres, das inverse Wörterbuch, für die Wert-Schlüssel-Zuordnung.

Hauptfunktionen

Die Bidict-Klasse bietet mehrere bemerkenswerte Funktionen:

  • Automatische Aktualisierung des inversen Verzeichnisses: Wenn das Standardwörterbuch geändert wird (durch Hinzufügung, Änderung oder Löschung von Elementen), aktualisiert sich das inverse Wörterbuch automatisch.
  • Listen von Schlüsseln für denselben Wert: Im Gegensatz zu einigen anderen bidirektionalen Dikt-Implementierungen ermöglicht Bidict, dass mehrere Schlüssel denselben Wert haben.
  • Effiziente Suche: Der Abruf von Schlüsseln oder Werten erfolgt in konstanter Zeit unter Nutzung der nativen Python-Wörterbuchimplementierung.

Verwendungsbeispiel

Um seine Funktionalität zu demonstrieren, erstellen wir ein Bidict und manipulieren Sie es:

<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>
Nach dem Login kopieren

Wir können den Wert für Schlüssel 'a' ändern:

<code class="python">bd['a'] = 0
print(bd)  # {'b': 0, 'a': 0}
print(bd.inverse)  # {0: ['b', 'a']}</code>
Nach dem Login kopieren

Beachten Sie, dass das inverse Wörterbuch automatisch aktualisiert wird, um die Änderung widerzuspiegeln. Wir können auch Elemente aus dem Wörterbuch löschen:

<code class="python">del bd['a']
print(bd)  # {'b': 0}
print(bd.inverse)  # {0: ['b']}</code>
Nach dem Login kopieren

Auch hier passt sich das inverse Wörterbuch nahtlos an die Löschung an.

Zusammenfassend lässt sich sagen, dass die Bidict-Klasse eine effiziente und bequeme Implementierung einer bidirektionalen Funktion bietet Hash-Tabelle in Python, die eine automatische Aktualisierung des inversen Verzeichnisses, Unterstützung für mehrere Schlüssel mit demselben Wert und eine Suche in konstanter Zeit bietet.

Das obige ist der detaillierte Inhalt vonWie können Sie eine bidirektionale Hash-Tabelle in Python implementieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!