Estructuras de datos

Diccionarios


Los diccionarios en Python son estructuras de datos muy potentes que permiten almacenar pares de clave y valor. A diferencia de las listas o tuplas, donde se accede a los elementos por posición (índice), en los diccionarios se accede a través de una clave única.


¿Cómo se crea un diccionario?

Los diccionarios se pueden definir usando llaves {} y separando cada par clave: valor con comas:

persona = {
    "nombre": "Carlos",
    "edad": 28,
    "documento": "12345678"
}

También se pueden crear usando la función dict():

vehiculo = dict(marca="Toyota", modelo="Corolla", año=2020)
print(vehiculo)
# {'marca': 'Toyota', 'modelo': 'Corolla', 'año': 2020}

Propiedades de los diccionarios:

  • Indexados por clave: se accede a los valores mediante sus claves.
  • se pueden modificar, añadir o eliminar elementos.
  • No ordenados (hasta Python 3.6), pero a partir de Python 3.7 mantienen el orden de inserción.
  • Dinámicos: pueden crecer o reducirse durante la ejecución.
  • Pueden estar anidados: es posible tener diccionarios dentro de otros diccionarios.

Acceder y modificar elementos:

Se puede acceder a un valor mediante su clave usando [] o la función get():

print(persona["nombre"])       # Carlos
print(persona.get("edad"))     # 28

Para modificar un valor, se usa la clave directamente:

persona["edad"] = 29

Si se intenta acceder o asignar una clave que no existe, esta se crea automáticamente:

persona["email"] = "carlos@example.com"

Iterar un diccionario:

Existen varias formas de recorrer un diccionario:

# Solo claves
for clave in persona:
    print(clave)

# Solo valores
for valor in persona.values():
    print(valor)

# Clave y valor
for clave, valor in persona.items():
    print(f"{clave}: {valor}")

Diccionarios anidados:

Un diccionario puede contener otros diccionarios como valores:

estudiantes = {
    "Juan": {"edad": 21, "carrera": "Ingeniería"},
    "Ana": {"edad": 22, "carrera": "Medicina"}
}

print(estudiantes["Juan"]["carrera"])  # Ingeniería

Métodos de los diccionarios:

A continuación, una lista de los métodos más comunes utilizados en diccionarios, con ejemplos:

1. clear():

Elimina todos los elementos del diccionario:

datos = {"a": 1, "b": 2}
datos.clear()
print(datos)  # {}
2. get(clave[, valor_por_defecto]):

Obtiene el valor de la clave indicada. Si no existe, devuelve None o el valor por defecto:

persona.get("altura")                 # None
persona.get("altura", "Desconocido") # Desconocido
3. items():

Devuelve una vista de pares (clave, valor):

print(persona.items())
# dict_items([('nombre', 'Carlos'), ('edad', 29), ('documento', '12345678'), ('email', 'carlos@example.com')])
4. keys():

Devuelve una vista con todas las claves:

print(persona.keys())  
# dict_keys(['nombre', 'edad', 'documento', 'email'])
5. values():

Devuelve una vista con todos los valores:

print(persona.values())  
# dict_values(['Carlos', 29, '12345678', 'carlos@example.com'])
6. pop(clave[, valor_por_defecto]):

Elimina y devuelve el valor de la clave indicada. Si la clave no existe y no se proporciona valor por defecto, lanza un error:

persona.pop("documento")               # '12345678'
persona.pop("altura", "No encontrada") # 'No encontrada'
7. popitem():

Elimina y devuelve el último par clave-valor insertado:

ultima = persona.popitem()
print(ultima)  # ('email', 'carlos@example.com')
8. update():

Actualiza el diccionario actual con otro. Si una clave ya existe, su valor se sobrescribe. Si no, se añade:

persona.update({"nombre": "Carlos A.", "telefono": "555-1234"})

¿Cuándo usar diccionarios?

Los diccionarios son ideales cuando:

  • Necesitamos acceso rápido a los datos mediante claves.
  • Queremos representar estructuras complejas con muchos campos (como una persona, un producto, etc.).
  • Se requiere almacenar información con significado (clave:valor) en lugar de datos en posiciones.