Diccionarios, Tuplas y Sets

Diccionarios

Un diccionario es una lista desordenada de pares de clave:valor. Supongamos que queremos guardar los precios de diferentes items que se venden en una cafeteria:
    La avena cuesta 3 dólares.
    La tostada cuesta 6 dólares.
    Zumo de zanahoria cuesta 5 dólares.
    Muffin cuesta 2 dólares.
En python creamos un diccionario con estos valores de la siguiente forma:
1
menu = {"avena": 3, "tostada": 6, "zumo": 5, "muffin": 2}
Copied!
Fíjate en eso:
    Un diccionario comienza y termina con llaves ({ y }).
    Cada elemento consta de una clave (es decir, "avena") y un valor (es decir, 3).
    Cada par de clave:valor (es decir, "avena": 3, "tostada": 6) está separada por una coma (,)
    Se considera una buena práctica insertar un espacio en blanco después de cada coma, pero el código se puede ejecutar sin espacio.
Como vemos, los diccionarios nos proporcionan una forma de mapear piezas de datos entre sí, de manera que podamos encontrar rápidamente los valores que se asocian entre sí.

Caracteristicas

    Los diccionarios pueden tener como claves tipos de datos integer (int)
    Los valores pueden ser de cualquier tipo de datos válidos en python, tales como float, bool, str.
    Pueden inicializarse vacíos como las listas, por ejemplo: {} o dict()
    Para añadir valores a un diccionario puedes usar la sintaxis index o llamando al método update. Por ejemplo:
1
locations = {}
2
locations['Paris'] = 100
3
locations.update({"London": 75})
4
print(locations)
Copied!
Resultado
1
{'Paris': 100, 'London': 75}
Copied!
Si queremos imprimir el valor que contiene Paris, lo llamamos de la siguiente forma
1
print(locations['Paris'])
Copied!
Resultado
1
100
Copied!
Los diccionarios son "desordenados", lo cual significa que los elementos no tienen un orden definido, no se puede hacer referencia a un elemento utilizando un índice (como sí lo haciamos con las listas).
Los diccionarios son modificables, lo que significa que podemos cambiar, añadir o eliminar elementos una vez creado el diccionario.

Claves

Aquí podría surgir un pregunta y es ¿puede un diccionario tener dos claves con el mismo valor? La respuesta es: No, cada clave de un diccionario debe ser única. No puede tener dos claves con el mismo valor. Si se intenta utilizar la misma clave de nuevo, se sobrescribirá el valor anterior almacenado. Si una clave necesita almacenar múltiples valores, entonces el valor asociado con la clave debe ser una lista u otro diccionario, como por ejemplo
1
menu = {"alumnos": ["ana", "pedro", "jose"],
2
"edades": [23, 21, 25],
3
"promedio_calificaciones":
4
{"matematicas": 4.5, "estadistica": 4.8, "fisica": 3.9}
5
}
Copied!
Nota Fíjate que hemos realizado saltos de linea, esto es con el fin de tener una mejor visualización del diccionario, y saber donde empieza y termina cada clave y cada valor.
Aquí puedes observar como la clave promedio_calificaciones tiene un valor de tipo diccionario, donde almacenamos lo siguiente: {"matematicas": 4.5, "estadistica": 4.8, "fisica": 3.9}.

Iterando diccionarios

Podrás notar que anteriormente iteramos sobre las listas, ahora podemos iterar sobre los diccionarios, y lo hacemos con unas pequeñas diferencias, revisemos este código:
1
menu = {"alumnos": ["ana", "pedro", "jose"],
2
"edades": [23, 21, 25],
3
"promedio_calificaciones":
4
{"matematicas": 4.5, "estadistica": 4.8, "fisica": 3.9}
5
}
6
7
for key, value in menu.items():
8
print("Esta es la clave: ", key)
9
print("Este es el valor: ", value)
Copied!
Resultado
1
Esta es la clave: alumnos
2
Este es el valor: ['ana', 'pedro', 'jose']
3
Esta es la clave: edades
4
Este es el valor: [23, 21, 25]
5
Esta es la clave: promedio_calificaciones
6
Este es el valor: {'matematicas': 4.5, 'estadistica': 4.8, 'fisica': 3.9}
Copied!
Interesante! podemos también iterar solamente sobre la llave o solamente sobre el valor de la siguiente manera:
1
## iterando sobre la clave
2
for key in menu:
3
print("Esta es la clave: ", key)
Copied!
Resultado
1
Esta es la clave: alumnos
2
Esta es la clave: edades
3
Esta es la clave: promedio_calificaciones
Copied!
1
## iterando sobre el valor
2
for key in menu:
3
print("Este es el valor: ", menu[key])
Copied!
Resultado
1
Este es el valor: ['ana', 'pedro', 'jose']
2
Este es el valor: [23, 21, 25]
3
Este es el valor: {'matematicas': 4.5, 'estadistica': 4.8, 'fisica': 3.9}
Copied!

Tuplas

Es una estructura de datos en Python que nos permite guardar diferentes piezas de datos en ella. Es muy similar a las Listas, excepto porque las Tuplas son inmutables. Esto significa que una vez creada, el orden y el contenido de la tupla no puede ser cambiada.
1
my_info = ('Daniel', 'Medellin', 'Programmer', 3)
2
print(my_info)
Copied!
Resultado
1
('Daniel', 'Medellin', 'Programmer', 3)
Copied!
Podemos llamar un elemento por su posición
1
print(my_info[0])
2
print(my_info[-1])
Copied!
1
Daniel
2
3
Copied!
Pero decimos que es inmutable porque no se pueden cambiar los valores una vez son asignados.
1
my_info[0] = 'Danny'
Copied!
Resultado
1
Traceback (most recent call last):
2
File "<stdin>", line 1, in <module>
3
TypeError: 'tuple' object does not support item assignment
Copied!
Obtenemos un TypeError diciendo que no podemos re-asignar un valor ya que se trata de una tupla.

Upacking tuple

Tenemos una tupla previamente asignada a la variable my_info que hicimos de la siguiente manera
1
my_info = ('Daniel', 'Medellin', 'Programmer', 3)
Copied!
Cada uno de los elementos de la tupla pueden ser asignados a una variable, a esto lo llamamos "desempacar" una tupla. Esta es la sintaxis
1
nombre, ciudad, profesion, experiencia = my_info
2
print(nombre)
3
print(profesion)
Copied!
Resultado
1
Daniel
2
Programmer
Copied!

Un solo elemento

Una tupla puede contener un solo elemento, pero debemos tener cuidado al momento de asignarlo, ya que podríamos caer en un error. Miremos esto en detalle:
1
un_elemento = (4)
2
print(un_elemento)
3
print(type(un_elemento))
Copied!
Resultado
1
4
2
<class 'int'>
Copied!
4 en este caso no es una tupla, sino un integer. Esto es porque el paréntesis se usa en python para agrupar operaciones matemáticas, por ejemplo (4 + 2). Entonces ¿cuál es la forma correcta de asignar una tupla de un solo elemento? Miremos:
1
un_elemento = (4,) ## añadimos una coma al final
2
print(un_elemento)
3
print(type(un_elemento))
Copied!
Resultado
1
(4,)
2
<class 'tuple'>
Copied!

Sets

Los sets o conjuntos se utilizan para almacenar múltiples elementos en una sola variable. El set es uno de los 4 tipos de datos incorporados en Python que se utilizan para almacenar colecciones de datos, recordemos que los otros 3 son la lista, la tupla y el diccionario, todos con diferentes cualidades y usos.
Un set es una colección que no está ordenada ni indexada. Los sets se escriben de la siguiente manera:
1
mi_coleccion = {"pablo", "ana", "andrea"}
2
print(mi_coleccion)
Copied!
Resultado
1
{'andrea', 'ana', 'pablo'}
Copied!

Caracteristicas

    Los elementos del set no están ordenados, no son modificables y no permiten valores duplicados.
    Desordenado significa que los elementos de un set no tienen un orden definido. Los elementos del conjunto pueden aparecer en un orden diferente cada vez que se utilizan, y no se puede hacer referencia a ellos por índice o clave.
    Los sets son inmutables, lo que significa que no podemos cambiar los elementos una vez creado el set, pero sí se pueden añadir nuevos.
    Los conjuntos no pueden tener dos elementos con el mismo valor.
1
mi_coleccion = {"pablo", "ana", "andrea", "andrea"}
2
print(mi_coleccion)
Copied!
Resultado
1
{'andrea', 'ana', 'pablo'}
Copied!

Tipos de datos

Los sets pueden almacenar cualquier tipo de datos, incluso mezclados entre sí.
1
set1 = {"pablo", "ana", "andrea"}
2
set2 = {1, 5, 7, 9, 3}
3
set3 = {True, False, False}
4
set4 = {"abc", 34, True, 40, "mujer"}
Copied!
Last modified 8mo ago