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 :
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!