Maison  >  Article  >  développement back-end  >  Comment implémenter une table de hachage bidirectionnelle en Python pour plusieurs clés avec la même valeur ?

Comment implémenter une table de hachage bidirectionnelle en Python pour plusieurs clés avec la même valeur ?

Susan Sarandon
Susan Sarandonoriginal
2024-10-29 12:06:29622parcourir

How to Implement a Bidirectional Hash Table in Python for Multiple Keys with the Same Value?

Implémentation de table de hachage bidirectionnelle en Python

Le dict intégré de Python est une structure de données très utile, fournissant une recherche efficace basée sur des clés. Cependant, des situations surviennent lorsqu'une recherche inversée à partir de valeurs est souhaitée. Cet article explore les méthodes les plus efficaces de mise en œuvre d'une table de hachage bidirectionnelle, en proposant un exemple inspiré de solutions existantes et modifié pour répondre à des exigences spécifiques.

Mise en œuvre

La solution présentée utilise un bidic de classe personnalisé qui étend le dict du Python standard. Il maintient un dictionnaire inverse supplémentaire qui se met automatiquement à jour chaque fois que le bidic est modifié. Ce dictionnaire inverse mappe les valeurs à une liste de clés auxquelles cette valeur est attribuée.

Il est important de noter que, contrairement aux bibliothèques existantes, cette implémentation autorise plusieurs clés avec la même valeur. Cette fonctionnalité est cruciale dans certains scénarios.

Utilisation

La classe Bidict utilise les méthodes clés suivantes :

  1. bidict(args, kwargs ) : Constructeur, acceptant les arguments et les arguments de mots-clés qui sont stockés dans les dictionnaires standard dict et inverse.
  2. bidict.__setitem__(key, value) : Définit la clé de la valeur. Si key est déjà dans le bidict, il supprime key de la liste des clés associées à sa valeur actuelle dans le dictionnaire inverse. Il définit ensuite la clé sur la valeur dans les deux dictionnaires, mettant à jour la liste des clés associées à la valeur dans le dictionnaire inverse.
  3. bidict.__delitem__(key) : supprime la clé du bidict. Il trouve la valeur associée à la clé et met à jour le dictionnaire inverse en conséquence, supprimant la clé de la liste des clés associées à la valeur. Si la liste des clés pour la valeur devient vide, la valeur est supprimée du dictionnaire inverse.

Exemple d'utilisation

<code class="python">bd = bidict({'a': 1, 'b': 2})  
print(bd.inverse)  # {1: ['a'], 2: ['b']}
bd['c'] = 1 
print(bd.inverse)  # {1: ['a', 'c'], 2: ['b']}
del bd['c']
print(bd.inverse)  # {1: ['a'], 2: ['b']}</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