[MÚSICA] [MÚSICA] Hola de nuevo. Hoy introduciremos un nuevo tipo de dato que en Python se conoce como diccionarios, así como sus operaciones básicas. Un diccionario es una estructura de datos, es decir, una forma de organizar datos, donde a cada valor que queramos almacenar se le asigna una llave que tiene una característica y es que es un valor único dentro del diccionario. Y en Python los diccionarios también son un tipo de dato, dict. Esto quiere decir que podemos tener variables y parámetros de tipo diccionario y también funciones que retornen diccionarios. Un buen ejemplo de esto es el diccionario de un lenguaje como el español. A cada palabra, una llave, le corresponde una definición, su valor. Otro ejemplo es una red social como Twitter. A cada nombre de usuario, la llave, le corresponde un usuario con toda su información, su valor. En Python los diccionarios son un elemento básico del lenguaje, que así como las cadenas, está perfectamente integrado dentro de la sintaxis. Para crear un diccionario entonces, basta con indicarlo usando los caracteres mostrados, y separando las parejas llave, dos puntos, valor, usando comas. Aquí vemos cómo crear un diccionario vacío. También observamos que la función print sabe imprimir diccionarios. Y por último, vemos que al usar la función type obtenemos dict como resultado, tal como se esperaba. También es posible crear diccionarios con información desde el comienzo. Basta con escribir las parejas llave, dos puntos, valor, seguidos de una coma, y si queremos consultar el valor asociado a una llave entonces usamos los paréntesis cuadrados, como observamos en la línea 104. Y por supuesto, podemos adicionar nuevas parejas you de valor, como se puede observar en las líneas 6 a 8. Noten que para esto también usamos los paréntesis cuadrados. En los ejemplos anteriores, las llaves eran cadenas de caracteres, pero en realidad no hay ninguna restricción asociada al tipo de la llave. Como vemos aquí, pueden ser un int o un float. En este caso, noten que el diccionario representa mi agenda del día, y por eso tiene sentido que las llaves sean numéricas porque representan las horas del día. Lo mismo sucede con los valores, pueden ser de cualquier tipo, depende realmente de la información que necesitemos organizar, incluyendo otro diccionario, pero este tipo de estructuras un poco más complejas las manejaremos en el próximo módulo. Veamos un ejemplo más. Aquí en lugar de manejar mi agenda como un diccionario estamos llevando las cuentas del mercado, y cada artículo que compramos es la llave, y su precio es el valor asociado. Muy bien. Y así como podemos adicionar nuevas parejas llave-valor, podemos modificar el valor de una llave existente usando nuevamente los corchetes cuadrados y la instrucción de asignación como vemos a continuación. Pero hay algo que debemos tener muy presente. Cuando consultamos el valor asociado a una llave en un diccionario debemos ser cuidadosos porque si la llave no existe, se genera un error de tipo KeyError. Antes de estudiar alternativas que nos ayuden con esta situación les propongo una corta pregunta. Una manera de saber si una llave existe antes de consultar su valor es con el operador in. Si está en el diccionario, retorna a True, y False es lo contrario, como vemos en los ejemplos. Otra forma de evitar el error cuando se consulta una llave que no existe y que es muy usada porque reduce el tamaño del código, es a través del método get. Este método que se invoca sobre un diccionario recibe como parámetros una llave, y el valor que se debería retornar si la llave no existe en el diccionario. Veamos. En el ejemplo de la línea 35, dado que la llave manzana sí existe, el método get simplemente retorna el valor asociado. Mientras que en la línea 36, como la llave arándanos no existe, el método get retorna el valor por defecto definido que es el segundo parámetro. En este caso, la cadena, esa fruta no existe en el inventario. Como verán, el código es bastante más corto porque no tenemos que verificar primero la existencia de la llave. En realidad es un método muy útil. ¿Recuerdan el tipo None? De este hablamos cuando vimos que las funciones de la interfaz típicamente no retornan nada, y lo usamos justamente para expresar esto. Bien. None también es un valor que se usa en Python para denotar la ausencia de un valor. Entonces, ahora también vamos a utilizar None como un valor que será de mucha utilidad cuando el resultado de una operación puede no existir. Como por ejemplo, si no existe una llave en el diccionario, en vez de inventar un valor como, esa fruta no existe en el inventario, puedo decir None. Por último, tenemos la función len, que you vimos en el contexto de cadenas de caracteres y que también se puede utilizar para contar la cantidad de parejas que hay en el diccionario como vemos en las líneas 95 y 97. [MÚSICA] [MÚSICA]