Dominando Diccionarios en Python: Creación, Manipulación y Técnicas Avanzadas
Diccionario en Python
Esta guía completa explica los diccionarios de Python: cómo crearlos, acceder, añadir, eliminar elementos y aprovechar métodos integrados.
Video: Diccionarios en Python para Almacenar Pares Clave/Valor
Los diccionarios de Python son colecciones no ordenadas de pares clave/valor. Cada entrada asocia una clave única e inmutable con un valor que puede ser de cualquier tipo.
Crear un Diccionario en Python
Definir un diccionario es sencillo: coloca pares clave/valor separados por comas dentro de llaves {}. Las claves deben ser inmutables (cadenas, números, o tuplas de elementos inmutables) y únicas; los valores pueden ser de cualquier tipo y repetirse.
# diccionario vacío
my_dict = {}
# diccionario con claves enteras
my_dict = {1: 'manzana', 2: 'pelota'}
# diccionario con claves mixtas
my_dict = {'nombre': 'Juan', 1: [2, 4, 3]}
# usando dict()
my_dict = dict({1:'manzana', 2:'pelota'})
# desde secuencia de pares
my_dict = dict([(1,'manzana'), (2,'pelota')])
Todos los enfoques anteriores crean la misma estructura de diccionario.
Acceder a Elementos de un Diccionario
Los valores de diccionario se recuperan vía sus claves, ya sea con corchetes [] o el método get(). Usar corchetes lanza KeyError si la clave no existe; get() devuelve None por defecto.
# get vs [] para recuperar elementos
my_dict = {'nombre': 'Jack', 'edad': 26}
# Salida: Jack
print(my_dict['nombre'])
# Salida: 26
print(my_dict.get('edad'))
# Intentar acceder a clave inexistente devuelve None
print(my_dict.get('dirección'))
# KeyError
print(my_dict['dirección'])
Salida
Jack 26 None Traceback (most recent call last): File "<string>", line 15, in <module> print(my_dict['dirección']) KeyError: 'dirección'
Cambiar y Añadir Elementos de Diccionario
Los diccionarios son mutables. Asignar a una clave existente actualiza su valor; asignar a una clave nueva añade una entrada nueva.
# Cambiando y añadiendo elementos de diccionario
my_dict = {'nombre': 'Jack', 'edad': 26}
# actualizar valor
my_dict['edad'] = 27
# Salida: {'edad': 27, 'nombre': 'Jack'}
print(my_dict)
# añadir elemento
my_dict['dirección'] = 'Centro'
# Salida: {'dirección': 'Centro', 'edad': 27, 'nombre': 'Jack'}
print(my_dict)
Salida
{'nombre': 'Jack', 'edad': 27} {'nombre': 'Jack', 'edad': 27, 'dirección': 'Centro'}
Eliminar Elementos de un Diccionario
Usa pop() para eliminar una clave específica y recuperar su valor. popitem() elimina un par arbitrario, mientras que clear() limpia el diccionario completo. La palabra clave del puede eliminar entradas individuales o la variable completa.
# Eliminando elementos de un diccionario
# crear un diccionario
squares = {1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
# eliminar un elemento particular, devuelve su valor
# Salida: 16
print(squares.pop(4))
# Salida: {1: 1, 2: 4, 3: 9, 5: 25}
print(squares)
# eliminar un elemento arbitrario, devuelve (clave,valor)
# Salida: (5, 25)
print(squares.popitem())
# Salida: {1: 1, 2: 4, 3: 9}
print(squares)
# eliminar todos los elementos
squares.clear()
# Salida: {}
print(squares)
# eliminar el diccionario mismo
del squares
# Lanza Error
print(squares)
Salida
16 {1: 1, 2: 4, 3: 9, 5: 25} (5, 25) {1: 1, 2: 4, 3: 9} {} Traceback (most recent call last): File "<string>", line 30, in <module> print(squares) NameError: name 'squares' is not defined
Métodos de Diccionario en Python
La tabla siguiente lista métodos comunes de diccionario y sus propósitos. Muchos se demuestran en los ejemplos que siguen.
| Método | Descripción |
|---|---|
| clear() | Elimina todos los elementos del diccionario. |
| copy() | Devuelve una copia superficial del diccionario. |
| fromkeys(seq[, v]) | Crea nuevo diccionario desde seq con cada clave en v (por defecto None). |
| get(key[,d]) | Devuelve valor para key; si ausente, devuelve d (por defecto None). |
| items() | Devuelve vista de pares (clave, valor) del diccionario. |
| keys() | Devuelve vista de las claves del diccionario. |
| pop(key[,d]) | Elimina key y devuelve su valor o d; lanza KeyError si key falta y d no se proporciona. |
| popitem() | Elimina y devuelve par (clave, valor) arbitrario; lanza KeyError si diccionario vacío. |
| setdefault(key[,d]) | Devuelve valor para key; si ausente, inserta key con valor d (por defecto None) y devuelve d. |
| update([other]) | Inserta o actualiza pares clave/valor desde other, sobrescribiendo claves existentes. |
| values() | Devuelve vista de los valores del diccionario. |
Ejemplo de uso:
# Métodos de Diccionario
marks = {}.fromkeys(['Matemáticas', 'Inglés', 'Ciencias'], 0)
# Salida: {'Inglés': 0, 'Matemáticas': 0, 'Ciencias': 0}
print(marks)
for item in marks.items():
print(item)
# Salida: ['Inglés', 'Matemáticas', 'Ciencias']
print(list(sorted(marks.keys())))
Salida
{'Matemáticas': 0, 'Inglés': 0, 'Ciencias': 0} ('Matemáticas', 0) ('Inglés', 0) ('Ciencias', 0) ['Inglés', 'Matemáticas', 'Ciencias']
Comprensión de Diccionarios en Python
La comprensión de diccionarios ofrece una sintaxis concisa para construir diccionarios desde iterables. Sigue el patrón {clave: valor for elemento in iterable}.
# Comprensión de Diccionario
squares = {x: x*x for x in range(6)}
print(squares)
Salida
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Versión imperativa equivalente:
squares = {}
for x in range(6):
squares[x] = x*x
print(squares)
Salida
{0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
Las comprehensions pueden incluir múltiples bucles y filtros if. Ejemplo: solo cuadrados impares.
# Comprensión de Diccionario con condicional if
odd_squares = {x: x*x for x in range(11) if x % 2 == 1}
print(odd_squares)
Salida
{1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
Para más sobre comprensiones de diccionarios, ver Python Dictionary Comprehension.
Otras Operaciones con Diccionarios
Prueba de Pertenencia en Diccionario
Usa el operador in para verificar si existe una clave; no inspecciona valores.
# Prueba de Pertenencia para Claves de Diccionario
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Salida: True
print(1 in squares)
# Salida: True
print(2 not in squares)
# las pruebas de pertenencia son solo para clave, no valor
# Salida: False
print(49 in squares)
Salida
True True False
Iterar sobre un Diccionario
Itera sobre claves directamente, luego accede a valores.
# Iterando sobre un Diccionario
squares = {1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
for i in squares:
print(squares[i])
Salida
1 9 25 49 81
Funciones Integradas para Diccionarios
Funciones estándar como all(), any(), len() y sorted() se aplican frecuentemente a diccionarios.
| Función | Descripción |
|---|---|
| all() | True si toda clave evalúa a True (o si diccionario vacío). |
| any() | True si alguna clave evalúa a True; False para diccionario vacío. |
| len() | Número de pares clave/valor. |
| cmp() | Compara dos diccionarios (eliminado en Python 3). |
| sorted() | Devuelve lista ordenada de claves. |
Ejemplos:
# Funciones Integradas de Diccionario
squares = {0: 0, 1: 1, 3: 9, 5: 25, 7: 49, 9: 81}
# Salida: False
print(all(squares))
# Salida: True
print(any(squares))
# Salida: 6
print(len(squares))
# Salida: [0, 1, 3, 5, 7, 9]
print(sorted(squares))
Salida
False True 6 [0, 1, 3, 5, 7, 9]
python
- Dominando tipos de datos en Python: Guía práctica
- Dominando operadores en Python: Guía completa
- Dominando la sentencia pass en Python: Guía práctica
- Dominando argumentos de funciones en Python: Posicionales, por palabra clave y por defecto
- Dominando Iteradores en Python: Cómo Funcionan y Cómo Crear los Tuyos
- Explicación de Closures en Python: Cómo las Funciones Anidadas Capturan Variables
- Dominando datetime en Python: Guía Práctica de Fechas, Horas y Zonas Horarias
- Visión general de Python: Lenguaje de alto nivel, legible, interactivo y orientado a objetos
- Números en Python: Entendiendo tipos de datos numéricos inmutables
- Dominando cadenas en Python: Creación, acceso y manipulación
- Dominando tuplas en Python: Definición, uso y diferencias con listas