Comment implémenter une table de hachage bidirectionnelle en Python ?

DDD
Libérer: 2024-10-28 04:59:30
original
478 Les gens l'ont consulté

How Can You Implement a Bidirectional Hash Table in Python?

Implémentation de tables de hachage bidirectionnelles avec la classe Bidict

Les tables de hachage bidirectionnelles offrent la possibilité d'indexer à la fois par clés et par valeurs dans les mêmes données structure. Le dictionnaire natif de Python constitue une structure de données précieuse pour le mappage unidirectionnel, mais il est insuffisant lorsqu'il s'agit de recherche bidirectionnelle. Cet article présente un moyen efficace d'implémenter une table de hachage bidirectionnelle en Python.

Détails de l'implémentation

Le cœur de l'implémentation est la classe bidict, qui étend le dictionnaire standard de Python . Cette classe gère deux dictionnaires : un pour le mappage clé-valeur standard et un autre, le dictionnaire inverse, pour le mappage valeur-clé.

Principales fonctionnalités

La classe Bidict offre plusieurs fonctionnalités notables :

  • Mise à jour automatique du répertoire inverse : Lorsque le dictionnaire standard est modifié (via l'ajout, la modification ou la suppression d'un élément), le dictionnaire inverse se met à jour automatiquement.
  • Listes de clés pour la même valeur : Contrairement à certaines autres implémentations de dict bidirectionnel, bidict permet à plusieurs clés d'avoir la même valeur.
  • Recherche efficace : La récupération des clés ou des valeurs est effectuée en temps constant, en tirant parti de l'implémentation native du dictionnaire Python.

Exemple d'utilisation

Pour démontrer sa fonctionnalité, créons un bidict et manipulez-le :

<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>
Copier après la connexion

Nous pouvons modifier la valeur de la clé 'a' :

<code class="python">bd['a'] = 0
print(bd)  # {'b': 0, 'a': 0}
print(bd.inverse)  # {0: ['b', 'a']}</code>
Copier après la connexion

Notez que le dictionnaire inverse se met automatiquement à jour pour refléter le changement. Nous pouvons également supprimer des éléments du dictionnaire :

<code class="python">del bd['a']
print(bd)  # {'b': 0}
print(bd.inverse)  # {0: ['b']}</code>
Copier après la connexion

Encore une fois, le dictionnaire inverse s'adapte de manière transparente à la suppression.

En conclusion, la classe bidict fournit une implémentation efficace et pratique d'un dictionnaire bidirectionnel table de hachage en Python, offrant une mise à jour automatique du répertoire inverse, la prise en charge de plusieurs clés avec la même valeur et une recherche à temps constant.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!