Skip to article frontmatterSkip to article content
Site not loading correctly?

This may be due to an incorrect BASE_URL configuration. See the MyST Documentation for reference.

Diccionarios

Departamento de Tecnología
IES Frei Martín Sarmiento
Descripción de la imagen

Un diccionario es una colección no ordenada de pares clave: valor. Las claves son únicas e inmutables, mientras que los valores pueden ser de cualquier tipo y pueden ser modificados. Este tipo de datos es útil para almacenar relaciones entre pares de datos.

Los diccionarios están encerrados en llaves {}, y se usan dos puntos : para separar las claves y los valores.

Creación de un diccionario

Los diccionarios en Python se definen utilizando llaves {} y los pares clave-valor se separan por dos puntos : Por ejemplo, la sintaxis sería así:

mi_diccionario = {
    "clave1": valor1,
    "clave2": valor2,
    "clave3": valor3
}

Donde clave1, clave2 y clave3 son las claves que se utilizarán para acceder a los valores correspondientes.

Por ejemplo:

pais_capital = {'Alemania': 'Berlín',
                 'Canada': 'Otawa',
                 'Reino Unido': 'Londres'}
# Para llamar al valor en una diccionario debe usar la siguiente estructura diccionario["clave"]
print(pais_capital['Reino Unido'])
Londres

Métodos de manipulación de diccionarios

Como ya se ha comentado, los diccionarios son mutables. es decir, sus valores se pueden modificar, eliminar o añadir. Vamos a ver algún método:

Empezamos creando un diccionario inicial (pais_poblacion) en el que las claves serán nombres de países y los valores serán sus poblaciones.

# Crear un diccionario de países y sus poblaciones
paisPoblacion = {
    'China': 1444216107,
    'India': 1393409038,
    'Estados Unidos': 331002651,
    'Indonesia': 273523615,
    'Pakistán': 225199937
}
  1. keys(): Devuelve una nueva vista de las claves del diccionario.

claves = paisPoblacion.keys()
print("Claves del diccionario (países):", claves)
Claves del diccionario (países): dict_keys(['China', 'India', 'Estados Unidos', 'Indonesia', 'Pakistán'])
  1. values(): Devuelve una nueva vista de los valores del diccionario.

valores =paisPoblacion.values()
print("Valores del diccionario (poblaciones):", valores) 
Valores del diccionario (poblaciones): dict_values([1444216107, 1393409038, 331002651, 273523615, 225199937])
  1. items(): Devuelve una nueva vista de los elementos del diccionario (pares clave: valor).

elementos = paisPoblacion.items()
print("Elementos del diccionario (país, población):", elementos)  
Elementos del diccionario (país, población): dict_items([('China', 1444216107), ('India', 1393409038), ('Estados Unidos', 331002651), ('Indonesia', 273523615), ('Pakistán', 225199937)])
  1. get(clave, por_defecto): Devuelve el valor para clave si la clave está en el diccionario, de lo contrario devuelve por_defecto.

# Obtener una clave que existe
poblacion_india = paisPoblacion.get('India', 'No disponible')
print("Población de India:", poblacion_india) 
# Obtener una clave que no existe
poblacion_brasil = paisPoblacion.get('Brasil', 'No disponible')
print("Población de Brasil:", poblacion_brasil)
  1. update(clave: valor_actualizar): Actualiza el diccionario con los pares clave/valor entre paréntesis, sobrescribiendo las claves existentes o actualizándolas si ya existen.

paisPoblacion.update({'Tanzania': 67438110, 'Pakistán': 230000000}) 
# Agrega Tanzania y actualiza la población de Pakistán
print("Diccionario después de update:", paisPoblacion)  
  1. pop(clave): Elimina y devuelve el valor para clave si la clave está en el diccionario

poblacion_china = paisPoblacion.pop('China')
print("Diccionario después de pop:", paisPoblacion) 
print("Población de China eliminada:", poblacion_china)  # Salida: 1444216107

Como evitar la confusion con los conjuntos

Tanto los diccionarios como los conjuntos se declaran usando corchetes { }, por lo que en el caso que declares un diccionario o conjunto vacio luego puedes generar una confusion. En tal caso, puedes declarar los diccionarios y conjuntos de modo explicito de esta manera

miConjunto = set()
miDiccionario = dict()

Apéndice A: Tabla comparativa

CaracterísticaListasDiccionariosConjuntosTuplas
OrdenOrdenadoNo ordenadoNo ordenadoOrdenado
Tipo de datoSecuenciaMapeoConjuntoSecuencia
Sintaxis[ ]{ clave : valor }{ elemento1, elemento2 }( )
MutabilidadMutableMutable (claves inmutables)MutableInmutable
DuplicadosPermiteNo permite (claves)No permitePermite
Búsqueda por índiceNo (búsqueda por clave)No
Búsqueda por valorSí (búsqueda de valores)
Métodos principalesappend, extend, removekeys, values, items, get, updateadd, remove, discard, union, intersectioncount, index
Uso comúnAlmacenar secuenciasAlmacenar pares clave-valorAlmacenar colecciones sin duplicadosAlmacenar registros inmutables

Caso práctico: Eligiendo una estructura de datos

Suponga que usted fue elegido como asesor del código de una empresa y se encuentra con que la empresa almacena la información de sus productos de la siguiente manera

productos = ["Armarios", "Mesas", "Camas"]
stock = [100, 50, 75]
precios = [990, 590, 490]

¿Cuál sería una mejor manera de almacenar datos? ¿por qué eligió esa manera?

Solución

Se ha optado por crear un diccionario anidado, o sea, un diccionario dentro de otro

# Diccionario para almacenar datos de productos
muebles_info = {
    "Armarios": {"stock": 100, "precio": 990},
    "Mesas": {"stock": 50, "precio": 590},
    "Camas": {"stock": 75, "precio": 490}
}

Esto es mejor por las siguientes razones:

  • Integridad de datos: si eliminas un ítem en el diccionario, también eliminarás el resto de los datos relacionados con ese producto.

  • Consistencia: todo está “adjunto” al mismo producto, así que si cambias un índice, todo también se moverá.

  • Te ves obligado a agregar todos los datos relacionados de un producto.

  • Sin duplicados: Los diccionarios tienen claves no duplicadas, por lo que puedes estar seguro de que solo hay un registro por producto.

  • Legibilidad: Es más legible. base["Producto B"]["stock"] es mejor que producto[1] stock[1].