Tal como vimos en el módulo 1, los diccionarios son conjuntos desordenados de parejas clave: valor y, si vienes de otro lenguaje, puedes referenciar los diccionarios con “memorias asociativas” o “arreglos asociativos”.
Las claves de los diccionarios pueden ser cualquier tipo de datos inmutable, como cadenas y números. Las tuplas podrían ser utilizadas como claves, pero únicamente si sus elementos contienen cadenas, números u otras tuplas. Vale aclarar que si una tupla contiene cualquier objeto mutable, no podrá utilizarse como clave, ya que podrían ser modificados luego de ser definidos.
Habiendo conocido qué son los diccionarios, veamos algunos métodos útiles y algunas técnicas de iteración.
Métodos de diccionarios
Update
dict.update([other])
Actualiza el diccionario con las palabras clave de other. Update acepta como argumento otro diccionario o argumentos de palabras clave con su valor. Por ejemplo:
>>> paises_america = {}
>>> paises_america.update({"norte": ["EEUU", "México", "Canadá"]})
>>> paises_america.update(centro=["Panamá", "Honduras", "Costa Rica", "Guatemala", "..."])
>>> ads = {"sur": ["Argentina", "Brasil", "Chile", "Uruguay", "..."]}
>>> paises_america.update(ads)
>>> paises_america
{'norte': ['EEUU', 'México', 'Canadá'], 'centro': ['Panamá', 'Honduras', 'Costa Rica', 'Guatemala', '...'], 'sur': ['Argentina', 'Brasil', 'Chile', 'Uruguay', '...']}
- Creamos un diccionario vacío con el nombre “paises_america”.
- Utilizamos update pasando como argumento un diccionario que definimos en la misma instancia con la llave “norte” y una lista de los países.
- Volvemos a utilizar update pasando como argumento la variable centro con una lista de los países como valor.
- Creamos un nuevo diccionario con la clave “sur” y una lista de los países.
- Volvemos a utilizar update pasando la variable del paso anterior como argumento.
- Observamos el contenido de paises_america y vemos que se encuentran todas las regiones con los países que indicamos con el método update.
Get
dict.get(key[, default])
Devuelve el valor de la clave key si la misma se encuentra en el diccionario; en caso contrario, devolverá el valor informado como default. Si no se informa el parámetro default y el diccionario no posee la clave key, devolverá None. Por ejemplo:
>>> paises_america.get("sur")
['Argentina', 'Brasil', 'Chile', 'Uruguay', '...']
>>> paises_america.get("otra_region")
>>> paises_america.get("otra_region", "No existe en el diccionario.")
'No existe en el diccionario.'
>>> paises_america.get("sur")
['Argentina', 'Brasil', 'Chile', 'Uruguay', '...']
>>> paises_america.get("otra_region")
>>> paises_america.get("otra_region", "No existe en el diccionario.")
'No existe en el diccionario.'
- Siguiendo el ejemplo anterior, utilizamos get para obtener el valor de la clave sur y vemos que devuelve su contenido.
- Pasamos como argumento la cadena “otra_region” y, dado a que ésta no se encuentra en el diccionario, devuelve None (No se imprime ningún valor cuando alguna expresión devuelve None).
- Si volvemos a pasar la misma clave pero con un valor por defecto, al no encontrar la clave, devuelve dicho valor.
Keys
dict.keys()
Devuelve una lista con todas las claves que posee el diccionario. Por ejemplo:
>>> paises_america.keys()
dict_keys(['norte', 'centro', 'sur'])
- Siguiendo el ejemplo de los países, utilizamos el método keys y vemos que nos devuelve todas las claves que creamos.
Values
dict.values()
Devuelve una lista con todos los valores de cada clave del diccionario. Cada elemento de la lista es el valor de una clave del diccionario. Por ejemplo:
>>> paises_america.values()
dict_values([['EEUU', 'México', 'Canadá'], ['Panamá', 'Honduras', 'Costa Rica', 'Guatemala', '...'], ['Argentina', 'Brasil', 'Chile', 'Uruguay', '...']])
- Utilizamos el método values y vemos que cada elemento contiene la lista de países de cada una de las claves
Vale aclarar que a partir de la versión 3.7 de Python, el orden de los elementos del diccionarios está garantizado según el orden en que fueron añadidas las claves/valor y modificar un valor no altera su orden. Esto nos permite que, desde Python 3.8, también podamos acceder a las claves y valores en el orden inverso con la función reversed que lo veremos un ejemplo más adelante.
Items
dict.items()
Devuelve una vista de todos los elementos del diccionario (claves y valores). Una vista proporciona una una vista dinámica de las entradas del diccionario, lo que significa que cuando cambia el diccionario -cualquier valor o clave-, la vista refleja estos cambios.
Las vistas de diccionario se pueden iterar para obtener sus datos. Por ejemplo:
>>> for k,v in paises_america.items():
... print(k,v)
...
norte ['EEUU', 'México', 'Canadá']
centro ['Panamá', 'Honduras', 'Costa Rica', 'Guatemala', '...']
sur ['Argentina', 'Brasil', 'Chile', 'Uruguay', '...']
- Siguiendo el ejemplo de los países, utilizamos un ciclo for pero indicando dos valores k y v -de las siglas key & value- para iterar sobre la vista generada por el método items.
- Vemos que se imprimen todas las claves una a una seguido de su valor.