fbpx
Volver a Curso

Curso profesional de Python

0% Completado
0/0 Steps
  1. Antes de iniciar el curso.

    Grupos y Foros
  2. Curso profesional de Python
    Preparación del ambiente de trabajo.
  3. Estructura y elementos del lenguaje
    7 Temas
    |
    1 Cuestionario
  4. Principales métodos del objeto string
    7 Temas
    |
    1 Cuestionario
  5. Tipos de datos complejos
    4 Temas
    |
    1 Cuestionario
  6. Funciones definidas por el usuario
    4 Temas
    |
    1 Cuestionario
  7. Módulos, paquetes y namespaces
    3 Temas
    |
    1 Cuestionario
  8. POO/OOP (Programación Orientada a Objetos)
    8 Temas
    |
    1 Cuestionario
  9. Conversión de tipos
    5 Temas
    |
    1 Cuestionario
  10. Ficheros
    4 Temas
    |
    1 Cuestionario
  11. Bases de datos con SQLITE3
    3 Temas
    |
    1 Cuestionario
  12. Encuesta sobre el curso
  13. Proyecto final
    2 Temas
Lección Progreso
0% Completado

Los conjuntos son contenedores de valores que no están ordenados y, a diferencia de las listas, no permiten valores duplicados. Al agregar dos elementos iguales a un conjunto, únicamente se conservará uno de ellos.

Creando un conjunto

Crear conjuntos es similar a crear listas, solo que debes incluir los valores entre llaves y separarlos por comas. Por ejemplo…

>>> dias = {'Lunes', 'Martes', 'Miércoles', 'Jueves'}
>>> type(dias)
<class 'set'>
>>> dias
{'Miércoles', 'Jueves', 'Lunes', 'Martes'}
  1. Creamos la variable días e incluimos los días de la semana entre llaves.
  2. Si comprobamos el tipo de datos, vemos que devuelve set.
  3. Además, si observamos el contenido, veremos que los valores no se encuentran en el mismo orden en el que fueron definidos.

Modificando un conjunto

Del mismo modo que las listas poseen el método append para agregar valores, los conjuntos poseen el método add. Su uso es sencillo…

>>> dias.add('Viernes')
>>> dias
{'Lunes', 'Miércoles', 'Viernes', 'Martes', 'Jueves'}
  1. Solo utilizamos el método add de la variable e indicamos el valor que deseamos añadir.
  2. Si observamos el contenido, vemos que ya se encuentra el valor Viernes.

Eliminando elementos

Existen 3 maneras de eliminar elementos de un conjunto, utilizando los métodos discard, remove y pop. Por ejemplo…

>>> dias.discard('Viernes')
>>> dias
{'Lunes', 'Miércoles', 'Martes', 'Jueves'}
>>> dias.discard('Sábado')
>>> dias.remove('Jueves')
>>> dias
{'Lunes', 'Miércoles', 'Martes'}
>>> dias.remove('Domingo')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'Domingo'
>>> dias.pop()
'Lunes'
>>> dias
{'Miércoles', 'Martes'}
  1. Para utilizar discard, pasamos como parámetro el valor que deseamos eliminar.
  2. Si utilizamos un valor que no existe en el conjunto, no sucede nada.
  3. Para utilizar remove, indicamos el valor que queremos eliminar.
  4. Si pasamos un valor que no existe, elevará una excepción KeyError.
  5. Si utilizamos el método pop, se elimina el último elemento, pero como el conjunto no se encuentra ordenado, el valor que se elimina es aleatorio.

Operaciones típicas

Las operaciones típicas entre conjuntos son la la unión, intersección, diferencia, y diferencia simétrica. Siendo así, podemos ver el siguiente ejemplo…

>>> multiplos_2 = {0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20}
>>> multiplos_3 = {0, 3, 6, 9, 12, 15, 18, 21, 24, 27, 30}
>>> multiplos_2 - multiplos_3
{2, 4, 8, 10, 14, 16, 20}
>>> multiplos_2 | multiplos_3
{0, 2, 3, 4, 6, 8, 9, 10, 12, 14, 15, 16, 18, 20, 21, 24, 27, 30}
>>> multiplos_2 & multiplos_3
{0, 18, 12, 6}
>>> multiplos_2 ^ multiplos_3
{2, 3, 4, 8, 9, 10, 14, 15, 16, 20, 21, 24, 27, 30}
  1. Definimos la variable multiplos_2 con valores hasta el 20
  2. Definimos la variable multiplos_3 con valores hasta el 30
  3. Obtenemos los valores que existen en multiplos_2 pero no en multiplos_3
  4. Obtenemos los valores que existen en multiplos_2 o en multiplos_3
  5. Obtenemos los valores que existen en ambas variables
  6. Obtenemos los valores que existen en una u otra variable pero no en ambas

Diccionarios (dict)

Otro tipo de dato muy utilizado en Python son los diccionarios. Los diccionarios son conjuntos desordenados de parejas clave: valor, por lo que para cada valor que almacenes en el diccionario, siempre habrá una clave para poder acceder a él.

Debes considerar que al definir un diccionario, las claves serán únicas y no se repetirán, dado a que con ellas accederás a sus correspondientes valores en una instancia posterior.

Creando un diccionario

Crear diccionarios es sencillo. Solo debes utilizar entre llaves, las parejas clave: valor que desees separados por coma.

>>> siglas = {'Celcius': 'C', 'Fahrenheit': 'F'}
>>> type(siglas)
<class 'dict'>
  1. Si definimos la variable siglas con la abreviación de cada escala termodinámica
  2. Y luego comprobamos el tipo de dato de la variable, vemos que devuelve el tipo dict

Obteniendo valores

Una vez hayas creado el diccionario, puedes buscar los valores mediante el uso de su clave. Por ejemplo…

>>> siglas['Celcius']
'C'
>>> siglas.get('Celcius')
'C'
  1. Y luego accedemos obtenemos el valor de la clave ‘Celcius’, observamos que nos devuelve el valor ‘C’.
  2. Aunque podemos lograr lo mismo con el método get. El mismo devolverá, en caso de encontrarlo, el valor de una clave.

La diferencia entre estas maneras de obtener un valor, es que al intentar obtener el valor de una clave que no se encuentra en el diccionario, la primer forma elevará una excepción KeyError mientras que el método devolverá None.

None es un tipo de datos de Python utilizado para indicar la falta o ausencia de valor. Vale aclarar que None no es lo mismo que False, tampoco es 0 (cero). Cualquier comparación de None con algo diferente de él mismo, será False. Por ejemplo…

>>> None == False
False
>>> None == True
False
>>> None == None
True
  1. Por más que comparemos None contra False y contra True, ninguna es verdadera.
  2. La única comparación verdadera resulta de comparar None con None.

Otra manera de crear un diccionario es utilizar el método dict pasando como parámetro una lista con parejas clave: valor como tuplas. Por ejemplo…

>>> texto_completo = dict([('C', 'Celcius'), ('F', 'Fahrenheit'), ('K', 'Kelvin')])
>>> texto_completo
{'C': 'Celcius', 'F': 'Fahrenheit', 'K': 'Kelvin'}
>>> type(texto_completo)
<class 'dict'>
  1. Si definimos la variable texto_completo utilizando la función dict, debemos pasar como parámetro una lista, en donde sus elementos sean tuplas que el primer elemento sea la clave para el diccionario y el segundo el valor para el mismo.
  2. Si observamos su contenido, vemos que se ha creado un diccionario.
  3. Y si obtenemos el tipo de datos, vemos que es dict.

Modificando un diccionario

Para agregar una paraja de clave: valor o modificar el valor de una clave de un diccionario, puedes hacerlo utilizando el formato var[key] y asignando el valor que deseas. Por ejemplo…

>>> siglas['Kelvin'] = 'Ke'
>>> siglas['Kelvin'] = 'K'
>>> siglas
{'Celcius': 'C', 'Fahrenheit': 'F', 'Kelvin': 'K'}
  1. En primera instancia, definimos erróneamente el valor para la clave Kelvin, agregando así la pareja al diccionario.
  2. Ahora modificamos su valor de la misma manera en la que lo definimos y observamos que el valor de la clave fue modificado.

Comprendiendo nuestro código

Si volvemos a nuestro ejemplo ultima_modificacion.py luego de haber hecho un recorrido sobre los diversos tipos de datos de Python, podemos comprender su funcionamiento.

CONDICIONES = {
    "Hoy": "today == date",
    "Ayer": "today - date == dt.timedelta(days=1)",
    "Esta semana": "today.isocalendar()[1] == date.isocalendar()[1]",
    "La semana pasada": "today.isocalendar()[1] - date.isocalendar()[1] == 1",
    "Este mes": "today.month == date.month",
    "El mes pasado": "today.month - date.month == 1",
    "Este año": "today.year == date.year",
    "El año pasado": "today.year - date.year == 1",
}

Si observamos, se crea una constante de nombre CONDICIONES que posee las claves Hoy, Ayer, etc. y cada una de ellas posee una cadena como valor. Por ahora no analizaremos dichos valores, pero estamos en condiciones de seguir avanzando con nuestro código.