Los diccionarios y los sets – 100 días de Python #7

Los diccionarios y los sets – 100 días de Python #7

¿Qué son los diccionarios?

Los diccionarios son estructuras similares a las listas o las tuplas, con la gran diferencia que estos, en lugar de tener posiciones numéricas, funcionan por claves (keys) y valores (values).

Los diccionarios los escribiremos con unas llaves "{ }".

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."
}

print(microsoft_office["excel"])

Resultado en la consola

Microsoft Excel es un programa de hoja o planilla de cálculo.

En el print() estoy realizando la llamada a la clave "excel" del diccionario. Al hacerlo, me devuelve el valor asociado a dicha clave.

Por cierto, cada "key:value" del diccionario lo separaremos con una coma. La coma después del último elemento es opcional.

Llegados a este punto, podemos recibir un error nuevo, un KeyError si nos equivocamos al escribir la clave o no existe:

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."
}

print(microsoft_office["outlook"])

Resultado en la consola

File "d:\tests\python\100\day7.py", line 6, in
print(microsoft_office["outlook"])
KeyError: 'outlook'

El error nos muestra la clave incorrecta. Puesto que no existe esa clave en el diccionario, tenemos este error.

Las claves del diccionario, no tienen porqué ser strings, pueden ser por ejemplo números:

diccionario = {
1 : "Valor 1",
2 : "Valor 2",
3 : "Valor 3",
}

print(diccionario[3])

Resultado en la consola

Valor 3

Añadir nuevos elementos al diccionario

Para añadir nuevos elementos al diccionario, vamos a hacerlo de la siguiente forma. Escribimos el nombre del diccionario, con unos corchetes y el nombre de la nueva clave. Después asociamos un valor a esa clave con el operador de asignación.

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

microsoft_office["outlook"] = "Microsoft Outlook es un administrador de información personal y un cliente de correo electrónico."

print(microsoft_office["outlook"])

Resultado en la consola

Microsoft Outlook es un administrador de información personal y un cliente de correo electrónico.

Crear un diccionario vacío

Hay ocasiones en las que necesitaremos utilizar diccionarios vacíos, normalmente, para que el programa vaya rellenándolo de alguna forma por ejemplo, los ítems del inventario del personaje de un juego. Este empieza vacío y se irá llenando con elementos. Es tan fácil como hacer esto:

vacio = {}

Ahora, en ese mismo ejemplo del inventario del jugador, supongamos que al perder, se reinicia su inventario. La forma más fácil de borrárselo será así:

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

microsoft_office["outlook"] = "Microsoft Outlook es un administrador de información personal y un cliente de correo electrónico."

microsoft_office = {}

print(microsoft_office)

Resultado en la consola

{}

No ha quedado nada del diccionario.

Editar elementos ya creados en el diccionario

Si quieres modificar el valor de una clave ya creada del diccionario, lo puedes hacer así:

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

microsoft_office["word"] = "Microsoft Word sirve para escribir todo tipo de documentos de texto."

print(microsoft_office["word"])

Resultado en la consola

Microsoft Word sirve para escribir todo tipo de documentos de texto.

Iterar diccionarios de Python

Algo realmente útil es la iteración de diccionarios enteros con un bucle. Por ejemplo, que queremos una lista con las claves del diccionario, lo hacemos así:

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

for programa in microsoft_office:
    print(f"-{programa}.")

Resultado en la consola

-word.
-excel.
-power.

Vaya, por temas de comodidad a la hora de llamar a las claves, las he puesto todas en minúscula. ¿Qué tal si hacemos que salgan en mayúsculas solo la primera letra de cada elemento?

Esto lo podemos conseguir con el método capitalize().

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

for programa in microsoft_office:
    print(f"-{programa.capitalize()}.")

Resultado en la consola

-Word.
-Excel.
-Power.

Analicemos esto bien. Especificamos "clave" para iterar todas las claves del diccionario. Con "clave" directamente en el bucle, accederemos a las claves. Con el nombre del diccionario, unos corchetes y "clave" obtendremos el valor.

Además, con lower() hago que todo el texto aparezca en minúsculas.

microsoft_office = {
"word" : "Microsoft Word es el procesador de texto de la suite.",
"excel" : "Microsoft Excel es un programa de hoja o planilla de cálculo.",
"power":"Microsoft PowerPoint es un muy popular programa para desarrollar y desplegar presentaciones visuales."}

for clave in microsoft_office:
    print(f"-{clave.capitalize()}: {microsoft_office[clave].lower()}")

Resultado en la consola

-Word: microsoft word es el procesador de texto de la suite.
-Excel: microsoft excel es un programa de hoja o planilla de cálculo.
-Power: microsoft powerpoint es un muy popular programa para desarrollar y desplegar presentaciones visuales.

Los sets de Python

Los sets son como listas desordenadas, sin índice de posición. Los elementos varían aleatoriamente de orden (en la misma ejecución no cambian). Además, los valores que le almacenemos deben ser inmutables, como por ejemplo, un string literal.

Un dato string, un integer o cualquier otro valor literal, no puede variar durante la ejecución. En cambio, una lista, por ejemplo, puede variar como hemos visto. Podemos modificar los datos que lleva dentro. Entonces, no puedes almacenar una lista dentro de un set. En una lista podrías meter otra lista perfectamente. Ya veremos esto otro día.

Los sets los distinguimos por las llaves de apertura y cierre. Son parecidos en sintaxis a los diccionarios, pero estos no llevan clave y valor, solo valor.

animales = {"perro", "iguana", "gato", "pitón", "chimpancé"}

print(animales)
print(animales)

Resultado en la consola

{'iguana', 'chimpancé', 'perro', 'gato', 'pitón'}
{'iguana', 'chimpancé', 'perro', 'gato', 'pitón'}

Al imprimirlo, el orden, no es el mismo en el que he escrito el set. Me ha puesto el que le ha dado la gana. Pero podemos ver con el segundo print() que en tiempo de ejecución no cambia el orden.

Si vuelves a ejecutarlo, cada vez irá cambiando de orden:

Resultado en la consola

{'pitón', 'gato', 'perro', 'chimpancé', 'iguana'}
{'pitón', 'gato', 'perro', 'chimpancé', 'iguana'}

Duplicados en los sets

En los sets, a diferencia de, por ejemplo las listas, no permiten valores duplicados:

animales = {"perro", "iguana", "gato", "pitón", "chimpancé", "perro"}

print(animales)

Resultado en la consola

{'perro', 'gato', 'iguana', 'chimpancé', 'pitón'}

Pese a estar el valor "perro" dos veces, nos descarta la repetición y desaparece en tiempo de ejecución. Lo bueno, es que no da ningún error y el programa podrá funcionar sin problemas, aunque cometamos este fallo.

De momento no les vamos a poder dar mucha utilidad a los sets, así que dejamos sus métodos y ver alguna utilidad práctica con ellos para otro día.

Tienes los ejercicios correspondientes a este séptimo día aquí.

4 comentarios en «0»

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

curso de Python Entrada anterior Soluciones de ejercicios y proyecto – 100 días de Python #6
curso de Python Entrada siguiente Ejercicios con diccionarios – 100 días de Python #7