Curso de programación

Clase 5: Tuplas y diccionarios

Tuplas

Tuplas

Una tupla (tuple) es una secuencia de valores. Los valores pueden ser de cualquier tipo y están indexados por enteros, por lo que en ese sentido las tuplas se parecen mucho a las listas. La diferencia importante es que las tuplas son inmutables.

Tuplas (cont)

Sintácticamente, una tupla es una secuencia de valores separados por comas:


						t = 'a', 'b', 'c', 'd', 'e'
					

Aunque no es necesario, es común encerrar las tuplas entre paréntesis:


						t = ('a', 'b', 'c', 'd', 'e')
					
Dependiendo de lo que queramos hacer, las tuplas pueden ser más rápidas que las listas.Ref

Tuplas

Por lo tanto, podemos decir que las tuplas son un tipo de datos que:

  • Tiene un orden.
  • Se acceden a los elementos mediante un índice numérico
  • Iterables
  • Inmutables. Es la diferencia principal.
Ver comparación con listas

Crear tuplas en Python


						tupla = (1,2,3)
						tupla2 = 1,2,3 # Se crea una tupla sin paréntesis
						vocales = ('a', 'e', 'i', 'o', 'u')
						dias = ("lunes", "martes", "miércoles", "jueves", "viernes")
						print (tupla)
						print (tupla2)
						print (vocales)
						print (dias)
						print (dias[3]) # Se accede por índice al elemento 3
					

Output


						(1, 2, 3)
						(1, 2, 3)
						('a', 'e', 'i', 'o', 'u')
						('lunes', 'martes', 'miércoles', 'jueves', 'viernes')
						jueves
					

¿Preguntas?

Operaciones con tuplas

Operaciones con tuplas

Las tuplas son inmutables


							tupla = (1, 2, 3)
							tupla[0] = 5
							# TypeError: object doesn't support item assignment
						

Tuplas anidadas


							tupla = 1, 2, ('a', 'b'), 3
							print(tupla)       #(1, 2, ('a', 'b'), 3)
							print(tupla[2][0]) #a
						

Una lista en la tupla


							tupla = (1, 2, [88, 99], 3)
							tupla[2][0]= 99 # Permite cambiar el valor
						

Concatenar dos tuplas


							t1 = (1, 2, 3)
							t2 = (4, 5, 6)
							t3 = t1 + t2
							print(t3) # (1, 2, 3, 4, 5, 6)
						

¿Agregar un elemento a una tupla?

Si bien vimos que las tuplas son inmutables y por lo tanto los elementos no pueden agregarse, borrarse o modificarse. Tenemos algunas opciones para poder simularlo.

Por ejemplo, si queremos agregar un elemento a una tupla, como no podemos modificarla podríamos crear una nueva tupla concatenando el elemento a agregar y ese valor se lo asignamos a la variable ya existente de la tupla.


							mi_tupla = (1, 2, 3, 4, 5)
							# Si quiesieramos "agregar" un elemento
							mi_tupla = mi_tupla + (6,)
						

En realidad lo que estamos haciendo es concatenar (unir) dos tuplas y de esa manera tenemos el resultado como si fuera agregar un elemento.

Convertir una lista a tupla

El método tuple() permite convertir una lista en una tupla.


							lista = [1, 2, 3]
							tupla = tuple(lista)
							print (lista) # [1, 2, 3]
							print (tupla) # (1, 2, 3)
						

Iterar una tupla


							tupla = (1, 2, 3)
							for t in tupla:
								print(t) #1, 2, 3
						

Más métodos de tuplas

La mayoría de los operadores de listas funcionan también en tuplas.

El método count(elem) cuenta el número de veces que aparece "elem" en la tupla.


							t = (1, 2, 3, 1, 1)
							print (t.count(1)) # 3
						

El método index(elem) busca el objeto que se le pasa como parámetro (elem) y devuelve el índice en el que se ha encontrado.


							l = (7, 7, 7, 3, 5)
							print(l.index(5)) #4
						

El método index() también acepta un segundo parámetro opcional, que indica a partir de que índice empezar a buscar el objeto.


							l = (7, 7, 7, 3, 5)
							print(l.index(7, 2)) #2
						
En caso de no encontrarse el elemento devuelve un ValueError

¿Preguntas?

Diccionarios

Diccionarios

Los diccionarios son una estructura de datos que permite almacenar su contenido en forma de clave:valor

Son como listas, pero más general. Mientras que en las listas, los índices tienen que ser números enteros, en un diccionario pueden ser (casi) de cualquier tipo.

Propiedades de los diccionarios

Algunas propiedades de los diccionarios en Python:

  • Dinámicos: Pueden crecer o decrecer. Se pueden añadir o eliminar elementos. Igual que las listas.
  • Indexados: Los elementos del diccionario son accesibles a través de un índice llamada key.
  • Anidados: Un diccionario puede contener a otro diccionario en su campo value.

Crear diccionarios en Python


							diccionario = {} # Se crea diccionario vacío
							otro_diccionario = dict() # Se crea diccionario vacío
						

Agregar elementos


								> traductor = {} # Crear diccionario vacío
								> traductor['one']='uno' # Agregar el valor uno a la clave one
								> traductor['two']='dos' # Agregar el valor dos a la clave two
								> traductor
								{'one': 'uno', 'two': 'dos'} # Estructura del diccionario
							

Si la clave no existe se crea y agrega el valor.

Desde la versión 3.7 de Python los diccionarios están ordenados por lo que los elementos tendrán el orden en el cual fueron agregados. No pasa lo mismo en Python <= 3.6

Crear diccionarios en Python

Podemos crear un diccionario nuevo enviándole directamente un diccionario


							traductor = {'one': 'uno', 'two': 'dos', 'three': 'tres'}
						

Otra forma de verlo. Mas intuitivo.


							traductor = {
								'one': 'uno',
								'two': 'dos',
								'three': 'tres'
							}
						

Acceder y modificar elementos

Al igual que las listas y tuplas, los elementos pueden accederse con [] o con la función get()


							print(traductor['one']) # Uno
							print(traductor.get('one')) # Uno
						

Para modificar un elemento basta con usar [] con el nombre del key y asignar el valor que queremos.


							traductor['one']= 1
							print(traductor.get('one')) # 1
						

Si el key al que accedemos no existe, se añade automáticamente


							traductor['four']= 'cuatro'
							print(traductor.get('four')) # cuatro
							
						

Iterar un diccionario

Los diccionarios se iteran igual que una lista. La iteración se realiza sobre su key.


							diccionario = {
								'nombre': 'Carlos',
								'edad': '32',
								'e-mail': 'carlitos@gmail.com'
							}
							for d in diccionario:
								print (d)
						

							nombre
							edad
							e-mail
						

Si quisiera imprimir el value en vez de la key. ¿Cómo debería modificar el código?


								for d in diccionario:
									print (diccionario.get(d))
							

Iterar un diccionario

Es posible iterar sobre las keys y values de un diccionario.


							diccionario = {
								'nombre': 'Carlos',
								'edad': '32',
								'e-mail': 'carlitos@gmail.com'
							}
							for k,v in diccionario.items():
								print (f"Dato: {k} | Valor: {v}")
						

Salida:


							Dato: nombre | Valor: Carlos
							Dato: edad | Valor: 32
							Dato: e-mail | Valor: carlitos@gmail.com
						

Observar que se itera en realidad sobre diccionario.items()

Diccionarios anidados

Podemos tener en el value de una key otro diccionario o lista.


							anidado1 = {"a": 1, "b": 2}
							anidado2 = {"a": 1, "b": 2}
							d = {
							"anidado1" : anidado1,
							"anidado2" : anidado2
							}
							print(d)
							#{'anidado1': {'a': 1, 'b': 2}, 'anidado2': {'a': 1, 'b': 2}}
						

Listas como values


							l1 = [1,2,3,4,5]
							l2 = ['a', 'b', 'c']
							d = { "numeros" : l1, "letras" : l2 }
							print(d)
							#{'numeros': [1, 2, 3, 4, 5], 'letras': ['a', 'b', 'c']}
						

¿Preguntas?

Métodos para diccionarios

Métodos diccionarios Python

El método clear() elimina todo el contenido del diccionario.


							d = {'a': 1, 'b': 2}
							d.clear()
							print(d) #{}
						

El método get(key,default) nos permite consultar el value para un key determinado. El segundo parámetro es opcional y es el valor que va a devolver en caso que no encuentre la key.


							d = {'a': 1, 'b': 2}
							print(d.get('a')) #1
							print(d.get('z', 'No encontrado')) #No encontrado
						

Mas métodos útiles (part1)

El método items() devuelve una lista con los keys y values del diccionario. Si se convierte en list se puede indexar como si de una lista normal se tratase, siendo los primeros elementos las key y los segundos los value.


							d = {'a': 1, 'b': 2}
							it = d.items()
							print(it)             # dict_items([('a', 1), ('b', 2)])
							print(list(it))       # [('a', 1), ('b', 2)]
							print(list(it)[0][0]) # a
						

El método keys() devuelve las keys del diccionario. Si se usa en conjunto con list() se puede obtener en forma de lista.


							k = d.keys() 					# dict_keys(['a', 'b'])
							lista_keys = list(k) 	# ['a', 'b']
						

Mas métodos útiles (part2)

El método values() devuelve todos los values de un diccionario.


							d = {'a': 1, 'b': 2}
							print(list(d.values())) #[1, 2] # Se convierte a Lista
						

El método pop(key) busca y borra la key que se pasa como parámetro y devuelve el value asociado. Si la clave no existe da error.


							d = {'a': 1, 'b': 2}
							elem = d.pop('a') # elem=1
							print(d) #{'b': 2}
						

El método pop(key,default) es igual que el método get(key) pero en caso de error retorna default pasado por parámetro.


							d = {'a': 1, 'b': 2}
							elem = d.pop('e', 'no elem') # elem='no elem'
							print(d) # {'a': 1, 'b': 2}
						

Mas métodos útiles (part3)

El método update(diccionario) recibe como parámetro un diccionario. Los value son actualizados en el diccionario que es llamado. Si alguna key no está es agregada.


							d1 = {'a': 1, 'b': 2}
							d2 = {'a': 0, 'd': 400}
							d1.update(d2)
							print(d1)
							#{'a': 0, 'b': 2, 'd': 400}
						

Encontrar un elemento


						d = {'a': 1, 'b': 2}
						if 'a' in d:
							print("Encontrado")
						else:
							d1[a] = 1
					

Con in se puede buscar si una clave existe. Devolverá True o False. Puede consultar aquí una lista mas extensa de los métodos mas utilizados

¿Preguntas?

Ejercicios en clase

Ejercicio en clase 1

Crea una tupla llamada mi_tupla con los siguientes elementos: 1, 2, 3, 4, 5. E imprima el tercer elemento de la tupla.

Ejercicio en clase 2

  • Crea un diccionario llamado mi_diccionario con las siguientes claves y valores
    • Clave: 'nombre'. Valor: 'Juan'
    • Clave: 'edad'. Valor: '30'
    • Clave: 'ciudad'. Valor: 'La Plata'
  • Imprime el valor de la clave 'edad'.
  • Agregue una nueva clave 'profesion' con el valor 'programador'
  • Imprima el diccionario completo.

¡Fin de la clase!

Ir al inicio
Exportar clase a PDF

Bibliografía