PYTHON - DICCIONARIOS

Puedes ver todo el contenido de este vídeo GRATIS, simplemente registrandote

En esta sesión introducimos el uso de Diccionarios en Python, estructura con parejas de clave-valor, mostrando sus características y operaciones fundamentales.

Cargando video...

NOTA: ¡Este curso se encuentra disponible, completo y 100% gratis para ti!. Solo es necesario registrarse para poder disfrutarlo sin coste.

Descripción del Vídeo

Un Diccionario es el nombre dado en Python a la estructura de datos compuesta por parejas de clave/valor conocida en otros lenguajes como 'arreglo asociativo' o 'hash'. Se trata de manera similar a una lista, sólo que en lugar de índices numéricos, se accede mediante claves (alfanuméricas), y no es una colección ordenada.

En lugar de utilizar corchetes [...] como en las listas, para declarar los diccionarios en Python se usan llaves {...}. Se distinguen de los conjuntos (que también se declaran con llaves) porque cada elemento de un diccionario se denota con clave : valor (usando dos puntos como separador).

Las claves en un diccionario pueden ser de cualquier tipo de datos inmutable (números, cadenas, lógicos, etc) y no pueden repetirse. Pueden mezclarse distintos tipos de claves en un diccionario.
Los valores correspondientes a las claves en un diccionario pueden almacenar cualquier tipo de objeto (pueden ser mutables).

En general, no se puede asumir un orden específico en las claves de un diccionario, son independientes del orden de inserción (de hecho, las claves se comportan como un conjunto).

Al igual que las listas, los diccionarios en Python también son objetos, en este caso de la clase dict, y proporcionan varios métodos para su manipulación, obtener información de sus elementos, etc. 
# Declarar diccionario
>>> capital = { 'España': 'Madrid', 'Perú': 'Lima', 'Argentina': 'Buenos Aires', 'Colombia': 'Bogotá', 'Venezuela': 'Caracas' }
>>> capital
{'Colombia': 'Bogotá', 'Venezuela': 'Caracas', 'España': 'Madrid', 'Argentina': 'Buenos Aires', 'Perú': 'Lima'}
# Acceso a elemento
>>> capital['Perú']
'Lima'
# Verificar si un elemento está en el diccionario
>>> 'Argentina' in capital
True
>>> capital['Argentina']
'Buenos Aires'
# Agregar directamente elemento en diccionario
>>> capital['Uruguay']='Montevideo'
>>> capital
{'Colombia': 'Bogotá', 'Venezuela': 'Caracas', 'Argentina': 'Buenos Aires', 'Perú': 'Lima', 'España': 'Madrid', 'Uruguay': 'Montevideo'}
# La longitud de un diccionario es la cantidad de parejas clave/valor
>>> len(capital)
6
# Podemos eliminar un elemento de un diccionario (retornando el valor) con el método pop()
>>> c = capital.pop('Venezuela')
>>> c
'Caracas'
>>> capital
{'Colombia': 'Bogotá', 'Argentina': 'Buenos Aires', 'Perú': 'Lima', 'España': 'Madrid', 'Uruguay': 'Montevideo'}
# Si no nos interesa el valor a eliminar, podemos utilizar directamente el operador del
>>> del capital['Uruguay']
>>> capital
{'Colombia': 'Bogotá', 'Argentina': 'Buenos Aires', 'Perú': 'Lima', 'España': 'Madrid'}

# El método get() nos permite acceder al valor de un elemento, sin generar una excepción en caso de que no exista la clave
>>> capital.get('Colombia')
'Bogotá'
>>> capital.get('Venezuela')
>>> capital['Venezuela']
Traceback (most recent call last):
 File "", line 1, in 
KeyError: 'Venezuela'
# Podemos proporcionar un valor predeterminado en .get() en caso de que el elemento no exista
>>> capital.get('Venezuela','No encontrada')
'No encontrada'
# Los métodos keys() y values() nos dan, respectivamente, las claves y valores de un diccionario
>>> capital.keys()
dict_keys(['Colombia', 'Argentina', 'Perú', 'España'])
>>> capital.values()
dict_values(['Bogotá', 'Buenos Aires', 'Lima', 'Madrid'])
# El método items() nos da las tuplas (clave, valor) de un diccionario
>>> capital.items()  
dict_items([('Colombia', 'Bogotá'), ('Argentina', 'Buenos Aires'), ('Perú', 'Lima'), ('España', 'Madrid')])

# Podemos recorrer de varias maneras los elementos de un diccionario. El iterador predeterminado funciona con las claves
>>> for pais in capital:
...    print('La capital de',pais,'es',capital[pais])
...  
La capital de Colombia es Bogotá
La capital de Argentina es Buenos Aires
La capital de Perú es Lima
La capital de España es Madrid
# Lo anterior es lógicamente equivalente a iterar sobre keys()
>>> for pais in capital.keys():                       
...    print('La capital de',pais,'es',capital[pais])
...  
La capital de Colombia es Bogotá
La capital de Argentina es Buenos Aires
La capital de Perú es Lima
La capital de España es Madrid

# Si siempre nos interesan las claves y valores, podemos iterar sobre items()
>>> for pais, ciudad in capital.items():                      
...    print('La capital de',pais,'es',ciudad)        
...  
La capital de Colombia es Bogotá
La capital de Argentina es Buenos Aires
La capital de Perú es Lima
La capital de España es Madrid

# keys(), values() e items() son vistas especiales, no listas. Podemos extraerlas como listas si queremos:
>>> paises = list(capital.keys())
>>> paises
['Colombia', 'Argentina', 'Perú', 'España']
>>> ciudades = list(capital.values())
>>> ciudades
['Bogotá', 'Buenos Aires', 'Lima', 'Madrid']

# Al contrario, también podemos generar un diccionario partiendo de listas, con la ayuda de zip()
>>> nombres = ['Homero','Bart','Ned','Montgomery']
>>> apellidos = ['Simpson','Simpson','Flanders','Burns']      
>>> list( zip(nombres, apellidos) )
[('Homero', 'Simpson'), ('Bart', 'Simpson'), ('Ned', 'Flanders'), ('Montgomery', 'Burns')]
>>> dict(list(zip(nombres, apellidos)))     
{'Homero': 'Simpson', 'Ned': 'Flanders', 'Montgomery': 'Burns', 'Bart': 'Simpson'}
>>> personajes = dict(list(zip(nombres, apellidos)))
>>> personajes
{'Homero': 'Simpson', 'Ned': 'Flanders', 'Montgomery': 'Burns', 'Bart': 'Simpson'}

# Podemos 'unir' dos diccionarios con el método update()
>>> lisa = { 'Lisa': 'Simpson' }
>>> personajes.update( lisa )
>>> personajes
{'Homero': 'Simpson', 'Lisa': 'Simpson', 'Ned': 'Flanders', 'Montgomery': 'Burns', 'Bart': 'Simpson'}
# Si la clave ya existía previamente en el diccionario, se actualiza su valor (las claves no se repiten)
>>> personajes.update( { 'Ned': 'Gómez' } )    
>>> personajes
{'Lisa': 'Simpson', 'Homero': 'Simpson', 'Ned': 'Gómez', 'Montgomery': 'Burns', 'Bart': 'Simpson'}

# Es común el uso de estructuras de datos combinadas. Por ejemplo, una lista de diccionarios.
>>> p = []
>>> for nombre, apellido in personajes.items():           
...    p.append( {'nombre': nombre, 'apellido': apellido} )
...  
>>> p
[{'nombre': 'Lisa', 'apellido': 'Simpson'}, {'nombre': 'Homero', 'apellido': 'Simpson'}, {'nombre': 'Ned', 'apellido': 'Gómez'}, {'nombre': 'Montgomery', 'apellido': 'Burns'}, {'nombre': 'Bart', 'apellido':
'Simpson'}]

Rating

Global

Ver video en playlist

comments powered by Disqus

Headshot of Juan Paredes

Juan Paredes

Ingeniero de Sistemas con amplia experiencia, especializado en el desarrollo y arquitectura de software.