Diccionarios#

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, asi.
Note
Características de los diccionarios
Claves únicas: Cada
clave
en un diccionario es única, lo que significa que no puede haber claves duplicadas.Mutabilidad de valores: Los
valores
de un diccionario pueden ser modificados después de la creación.Desordenados: Aunque los diccionarios mantienen el orden de inserción a partir de Python 3.7, no se debe confiar en el orden.

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)
Población de India: 1393409038
# Obtener una clave que no existe
poblacion_brasil = paisPoblacion.get('Brasil', 'No disponible')
print("Población de Brasil:", poblacion_brasil)
Población de Brasil: No disponible
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)
Diccionario después de update: {'China': 1444216107, 'India': 1393409038, 'Estados Unidos': 331002651, 'Indonesia': 273523615, 'Pakistán': 230000000, 'Tanzania': 67438110}
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
Diccionario después de pop: {'India': 1393409038, 'Estados Unidos': 331002651, 'Indonesia': 273523615, 'Pakistán': 230000000, 'Tanzania': 67438110}
Población de China eliminada: 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í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]
.