Maison  >  Article  >  développement back-end  >  Comment implémenter une table de hachage bidirectionnelle en Python ?

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

DDD
DDDoriginal
2024-10-28 04:59:30480parcourir

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>

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>

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>

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!

Déclaration:
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