Maison >développement back-end >Tutoriel Python >Comment les tables de hachage bidirectionnelles améliorent-elles la recherche et la récupération de valeurs-clés ?

Comment les tables de hachage bidirectionnelles améliorent-elles la recherche et la récupération de valeurs-clés ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-10-29 11:22:30776parcourir

How do Bidirectional Hash Tables Enhance Key-Value Lookup and Retrieval?

Comment construire une table de hachage bidirectionnelle efficace

De la même manière que la structure de données Python dict, la table de hachage bidirectionnelle (ci-après appelée bidict) propose un mécanisme de recherche et de récupération de valeurs-clés. Cependant, les Bidicts permettent également des requêtes valeur-clé, offrant une capacité de recherche plus complète.

Une mise en œuvre efficace d'un Bidict

Une mise en œuvre efficace d'un Bidict peut être obtenue en utilisant une classe qui étend le type de données dict standard. Cette classe Bidict maintient dynamiquement un répertoire inverse qui associe les valeurs (du dict d'origine) à une liste de clés correspondantes.

Principales fonctionnalités

  • Répertoire inverse à mise à jour automatique : Les modifications apportées au dict standard sont automatiquement reflétées dans le répertoire inverse.
  • Listes de valeurs-clés : Le répertoire inverse mappe les valeurs à des listes de clés, permettant pour que plusieurs clés aient la même valeur.
  • Setters et deleters personnalisés : Les méthodes setitem et delitem modifiées garantissent un comportement correct lors de la définition et de la suppression items.

Répartition du code

L'implémentation de la classe Bidict implique :

  • Remplacer __init__ : Initialiser à la fois le dict standard et le répertoire inverse.
  • Remplacement de __setitem__ : Ajoutez la nouvelle paire clé-valeur au dict standard et mettez à jour le répertoire inverse en conséquence.
  • Remplacement de __delitem__ : Supprimez la clé du dict standard et mettez à jour le répertoire inverse en supprimant la clé de la liste des valeurs.

Exemple d'utilisation

<code class="python">bd = bidict({'a': 1, 'b': 2}) 
print(bd)                     # {'a': 1, 'b': 2}                 
print(bd.inverse)             # {1: ['a'], 2: ['b']}</code>

En utilisant le répertoire inverse, vous pouvez facilement récupérer les clés d'une valeur donnée :

<code class="python">print(bd.inverse[1])             # ['a']</code>

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