Saltar al contenido

Tabla hash bidireccional o diccionario bidireccional en Python

Conocemos los diccionarios de Python en una estructura de datos en Python que contiene datos en forma de pares clave:valor. En este artículo, discutiremos la tabla hash bidireccional o el diccionario bidireccional en Python. Podemos decir que un diccionario bidireccional se puede representar como clave ⇐⇒ valor. Un ejemplo de diccionarios bidireccionales es:

Ejemplo:

dict={ 1 : 'Apple' , 2 : 'Google' , 3 : 'Microsoft'}

Input 1: 1
Output 1: Apple

Input 2: Microsoft
Output 2: 3

Explaination:The above dictionary maps the keys ( integers) to the values (company names) in this case.

Un diccionario bidireccional se puede representar como clave ⇐⇒ valor. Es decir, puede devolver valor en función de la clave y también la clave correspondiente en función del valor. En el ejemplo anterior, se puede buscar un diccionario normal usando 1,2,3, lo que devolvería Apple, Google y Microsoft, respectivamente. Sin embargo, en un diccionario bidireccional, podemos buscar el diccionario usando 1,2 y 3, así como Apple, Google y Microsoft, que devolverían 1,2,3 respectivamente.

Implementación paso a paso

Paso 1: Instale la biblioteca bidict.

Esta biblioteca nos permite trabajar con tablas hash bidireccionales o diccionarios bidireccionales. Para instalar la biblioteca bidict, necesitamos usar el siguiente comando:

pip install bidict

Paso 2: Importación de la clase bidict desde el módulo bidict

Pitón

from bidict import bidict

Paso 3: crea un diccionario normal.

Crear un diccionario en Python es fácil. Vamos a crear un diccionario llamado dict_it_fullforms que pone los formularios cortos de TI de uso común en su forma completa.

Python3

dict_it_fullforms={'APK':'Android Application Package',

                   'CPU':'Central Processing Unit',

                   'SMS':'Short Message Service',

                   'USB':'Universal Serial Bus',

                   'WIFI':'Wireless Fidelity',

                   'WWW':'World Wide Web'}

Paso 4: crea un objeto bidict

Cree un diccionario bidireccional creando un objeto bidict bidict_it_fullforms usando dict_it_fullforms.

Python3

bidict_it_fullforms = bidict(dict_it_fullforms)

Paso 5: Buscar con formularios cortos

Aquí usamos las claves para imprimir los valores de bidict_it_fullforms.

Python3

print(bidic_it_fullforms['APK'])

print(bidic_it_fullforms['SMS'])

print(bidic_it_fullforms['WIFI'])

Salida:

Android Application Package
Short Message Service
Wireless Fidelity

Paso 6: Un atributo inverso de un objeto bidict

Para obtener las claves de los respectivos formularios completos, necesitamos usar un atributo inverso del bidict_it_fullforms objeto.

Python3

bidict_it_shortforms = bidict_it_fullforms.inverse

Paso 7: Buscar usando formularios completos

Ahora tenemos bidict_it_shortforms como una referencia de objeto bidict que se puede usar para recuperar claves usando valores. Por lo tanto, podemos obtener los formularios cortos utilizando los formularios completos.

Python3

print(bidic_it_shortforms['Central Processing Unit'])

print(bidic_it_shortforms['Universal Serial Bus'])

print(bidic_it_shortforms['World Wide Web'])

Salida:

CPU
USB
WWW

Paso 8: Cambios o Adiciones

Si se realizan cambios o adiciones de clave/valor a bidic_it_shortforms, se reflejará en bidic_it_fullforms y viceversa. Agreguemos la forma completa de SIM.

Python3

bid_it_shortforms['Subscriber Identity Module']='SIM'

print(bidic_it_fullforms['SIM'])

Salida:

Subscriber Identity Module

Código completo:

Python3

 

from bidict import bidict

 

dict_it_fullforms = {'APK': 'Android Application Package'

                     'CPU': 'Central Processing Unit',

                     'SMS': 'Short Message Service'

                     'USB': 'Universal Serial Bus'

                     'WIFI': 'Wireless Fidelity'

                     'WWW': 'World Wide Web'}

 

bidict_it_fullforms = bidict(dict_it_fullforms)

 

print(bidic_it_fullforms['APK'])

print(bidic_it_fullforms['SMS'])

print(bidic_it_fullforms['WIFI'])

 

bidict_it_shortforms = bidict_it_fullforms.inverse

 

print(bidic_it_shortforms['Central Processing Unit'])

print(bidic_it_shortforms['Universal Serial Bus'])

print(bidic_it_shortforms['World Wide Web'])

 

bid_it_shortforms['Subscriber Identity Module'] = 'SIM'

print(bidic_it_fullforms['SIM'])

Salida:

Android Application Package
Short Message Service
Wireless Fidelity
CPU
USB
WWW
Subscriber Identity Module