
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
}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'])
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])
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)])
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)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) 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: 1444216107Como 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ística | Listas | Diccionarios | Conjuntos | Tuplas |
|---|---|---|---|---|
| Orden | Ordenado | No ordenado | No ordenado | Ordenado |
| Tipo de dato | Secuencia | Mapeo | Conjunto | Secuencia |
| Sintaxis | [ ] | { clave : valor } | { elemento1, elemento2 } | ( ) |
| Mutabilidad | Mutable | Mutable (claves inmutables) | Mutable | Inmutable |
| Duplicados | Permite | No permite (claves) | No permite | Permite |
| Búsqueda por índice | Sí | No (búsqueda por clave) | No | Sí |
| Búsqueda por valor | Sí | Sí (búsqueda de valores) | Sí | Sí |
| Métodos principales | append, extend, remove | keys, values, items, get, update | add, remove, discard, union, intersection | count, index |
| Uso común | Almacenar secuencias | Almacenar pares clave-valor | Almacenar colecciones sin duplicados | Almacenar 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 queproducto[1]stock[1].