Taller N.
1
AyP
Maryém Aliria Ruiz Núñez
DICCIONARIOS
GENERALIDADES
Los diccionarios (mapas o estructuras de datos clave- valor) son una colección de pares
formados por una clave y un valor asociado a la clave. Los valores se mapean a las
claves.
Los diccionarios pueden tener valores de cualquier tipo: string o cadenas de caracteres,
números, listas, otros diccionarios, objetos, entre otros. Las claves, deben ser de un tipo
inmutable como cadenas, números o tuplas.
Características:
Los elementos en el diccionario se encierran entre corchetes {}.
Cada elemento en un diccionario debe contener un par de clave-valor, la clave es única
y con ella se accede al valor respectivo.
Cada par de clave-valor se llama elemento (item).
Se puede acceder a los valores almacenados usando las claves.
Los diccionarios son mutables es decir se pueden modificar, borrar, actualizar.
Los diccionarios pueden ser anidados, es decir un valor puede ser otro diccionario
Pueden almacenar diferentes tipos de datos como enteros, String, listas, otro
diccionario
En Python:
Los diccionarios son una forma de almacenar elementos son similares a una lista de
Python. Pero, en lugar de acceder a los elementos por el índice, se hace por una clave
fija, es decir se accede al elemento utilizando la clave. Se manejan como el par "key-
value".
En Python los diccionarios se llaman dict
Son dinámicos, pueden crecer o decrecer, se pueden añadir o eliminar items.
Son indexados, los elementos del diccionario son accesibles a través de la clave es
decir el componente key.
Pueden ser anidados, un diccionario puede contener a otro diccionario en el campo
value.
En Python existe la comprensión de diccionarios que es la facilidad de crear un
diccionario en una sola línea a partir de un objeto iterable, como listas, aplicando una
expresión a cada elemento para generar las claves y valores del nuevo diccionario, por
ejemplo:
{key: value for item in iterable if condition}
El formato general de un diccionario es:
mi_diccionario =
{"key1":<value1>,"key2":<value2>,"key3":<value3>,"key4":<value4>}
Página 1 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
Un ejemplo
un_diccionario = {
"nombre": "Juan",
"edad": 30,
"direcciones": ["Calle A, 123", "Calle B, 456"],
"datos_adicionales": {"ciudad": "Medellín", "pais": "Colombia"}
}
las claves son: nombre", "edad", "direcciones" y "datos_adicionales", los valores son de
diferente tipo: un string, un número, una lista y otro diccionario, respectivamente.
Otro ejemplo:
usuarios = {
"123456789": "contraseña_segura1",
"987654321": "clave_super_secreta",
"567890123": "password123"
}
La clave es el número de identificación y el valor es la contraseña
# Acceder a una contraseña dada la cédula
cedula = input("Ingrese la cédula: ")
if cedula in usuarios:
print(f"La contraseña asociada es: {usuarios[cedula]}")
else:
print("Cédula no encontrada.")
#=================================================
OPERACIONES CON DICCIONARIOS
Las operaciones más comunes con diccionarios son: Crear, buscar, acceder a los valores,
actualizar, borrar, mostrar, consultar cuantos ítem tiene, entre otras.
Crear diccionario
Los diccionarios se pueden crear de diferentes maneras:
1. Inicializándolo dentro del programa
d1 = {
"Nombre": "Sara",
"Edad": 27,
"Documento": 1003882
}
print(d1)
Página 2 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
La salida será:
#{'Nombre': 'Sara', 'Edad': 27, 'Documento': 1003882}
2. Crear un diccionario usando dict() y los pares key, value desde una lista y
entre paréntesis:
d2 = dict([
('Nombre', 'Sara'),
('Edad', 20),
('Documento', 1003882),
])
print(d2)
La salida será:
#{'Nombre': 'Sara', 'Edad': '27', 'Documento': '1003882'}
Otro ejemplo usando el constructor dict() .
d3 = dict(Nombre='Sara',
Edad=20,
Documento=1003882)
print(d3)
La salida será:
#{'Nombre': 'Sara', 'Edad': 27, 'Documento': 1003882}
3. Crear un diccionario a partir de dos listas
# Listas de nombres y notas
nombres = ["Camilo", "Ana", "Luis", "Sofia"]
notas = [4.5, 3.0, 3.8, 2.9]
# Crear el diccionario usando zip. Zip es para mapear listas, es decir formar
parejas con los elementos de cada lista, el primero con el primero, el segundo con
el segundo….
diccionario_notas = dict(zip(nombres, notas)
print(diccionario_notas)
4. Crear un diccionario desde un archivo tipo texto
def cargar_diccionario(archivo):
diccionario = {}
try:
with open(archivo, "r") as f:
for linea in f:
# Dividir la línea en clave y valores
clave, nombre, edad =
[Link]().split(",")
Página 3 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
diccionario[clave] = {"nombre":
[Link](), "edad": int([Link]())}
return diccionario
except FileNotFoundError:
print("El archivo no existe.")
return {}
En éste ejemplo el Archivo de entrada debe tener formato: clave, nombre, edad
separados por comas. El archivo se llama archivo = "[Link]"
El programa principal sería:
# Programa Principal Crear diccionario a partir del archivo
diccionario_personas = cargar_diccionario(“[Link]”)
# Mostrar el diccionario
print(diccionario_personas)
5. Crear un diccionario desde un archivo en Excel.
Ejemplo de programa en Python para crea un diccionario desde un archivo en
Excel, donde la primera columna es la clave y las 4 siguientes son el valor, el
archivo en Excel se llama [Link]
Para ello se debe importar una librería que permita trabajar con archivos en
Excel,por ejemplo pandas, en este caso se necesita también la librería :
import pandas as pd
# Cargar el archivo Excel
archivo_excel = "[Link]"
df = pd.read_excel(archivo_excel)
# Convertir el DataFrame en un diccionario. Se explicará más adelante
diccionario = df.set_index([Link][0]).iloc[:, :4].to_dict(orient="index")
# Mostrar el diccionario resultante
print(diccionario)
El archivo en Excel es:
CLAVE NOMBRE EDAD N1 N2
10 Sara 20 4 5
20 Cristian 19 3 3
50 Kevin 24 2,5 5
30 Juan 23 1,3 4
80 Pedro 21 4,2 3
90 Francisco 34 3,1 2
Página 4 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
La salida del programa es:
{10: {'NOMBRE': 'Sara', 'EDAD': 20, 'N1': 4.0, 'N2': 5}, 20: {'NOMBRE': 'Cristian', 'EDAD':
19, 'N1': 3.0, 'N2': 3}, 50: {'NOMBRE': 'Kevin', 'EDAD': 24, 'N1': 2.5, 'N2': 5}, 30:
{'NOMBRE': 'Juan', 'EDAD': 23, 'N1': 1.3, 'N2': 4}, 80: {'NOMBRE': 'Pedro', 'EDAD': 21,
'N1': 4.2, 'N2': 3}, 90: {'NOMBRE': 'Francisco', 'EDAD': 34, 'N1': 3.1, 'N2': 2}}
6. CREAR UN DICCIONARIO DESDE OTRO DICCIONARIO
clientela_10 = {cliente:descuento for (cliente, descuento) in
diccionario_descuentos.items() if descuento<30}
print(clientela_10)
Acceder y modificar elementos
Se puede acceder a sus elementos con [] o también con la función get()
print(d1['Nombre']) #Sara
print([Link]('Nombre')) #Sara
Para modificar un elemento basta con usar [] con el nombre del key y
asignar el valor que queremos.
d1['Nombre'] = "Laura"
print(d1)
#{'Nombre': Laura', 'Edad': 27, 'Documento': 1003882}
Si el key al que accedemos no existe, se añade automáticamente.
d1['Direccion'] = "Calle 123"
print(d1)
#{'Nombre': 'Laura', 'Edad': 27, 'Documento': 1003882, 'Direccion': 'Calle 123'}
Iterar diccionario
Los diccionarios se pueden iterar de manera muy similar a las listas u otras
estructuras de datos. Para imprimir los key .
# Imprime los key del diccionario
for x in d1:
print(x)
Página 5 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
#Nombre
#Edad
#Documento
#Direccion
Se puede imprimir también solo el value .
# Impre los value del diccionario
for x in d1:
print(d1[x])
#Laura
#27
#1003882
#Calle 123
O si queremos imprimir el key y el value a la vez.
# Imprime los key y value del diccionario
for x, y in [Link]():
print(x, y)
#Nombre Laura
#Edad 27
#Documento 1003882
#Direccion Calle 123
Diccionarios anidados
Los diccionarios en Python pueden contener uno dentro de otro. Podemos
ver como los valores anidado uno y dos del diccionario d contienen a su
vez otro diccionario.
anidado1 = {"a": 1, "b": 2}
anidado2 = {"a": 1, "b": 2}
d = {
"anidado1" : anidado1,
"anidado2" : anidado2
}
print(d)
#{'anidado1': {'a': 1, 'b': 2}, 'anidado2': {'a': 1, 'b': 2}}
Otro Ejemplo:
import json
def agregar_producto(diccionario):
"""Función para añadir un nuevo producto con todos sus datos."""
categoria = input("Ingrese la categoría del producto (Ejemplo: Electronicos, Ropa): ").strip()
Página 6 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
if categoria not in diccionario:
diccionario[categoria] = {} # Crea la categoría si no existe
producto_nombre = input("Ingrese el nombre del nuevo producto: ").strip()
print("Ingrese los detalles del producto en formato JSON (Ejemplo: {'marca': 'Apple', 'precio':
1200}):")
try:
detalles_producto = [Link](input()) # Entrada del usuario en formato JSON
if isinstance(detalles_producto, dict):
diccionario[categoria][producto_nombre] = detalles_producto
print("\nDiccionario actualizado:")
print(diccionario)
else:
print("❌ Error: Debe ingresar un diccionario válido en formato JSON.")
except [Link]:
print("❌ Error: Formato inválido. Ingrese los detalles correctamente.")
# Usamos el diccionario de productos que proporcionaste
productos = {
"Electronicos": {
"telefono": {"marca": "Samsung", "precio": 800},
"laptop": {"marca": "Dell", "precio": 1200}
},
"Ropa": {
"camisa": {"talla": "M", "color": "Azul"},
"jeans": {"talla": "32", "color": "Negro"}
}
}
# Agregar un nuevo producto ingresado por el usuario
agregar_producto(productos)
La salida es:
Ingrese la categoría del producto (Ejemplo: Electronicos, Ropa): electrodomesticos
Ingrese el nombre del nuevo producto: nevera
Ingrese los detalles del producto en formato JSON (Ejemplo: {'marca': 'Apple', 'precio': 1200}):
{"marca": "Haceb","precio": "3500000"}
Diccionario actualizado:
{'Electronicos': {'telefono': {'marca': 'Samsung', 'precio': 800}, 'laptop': {'marca': 'Dell', 'precio':
1200}}, 'Ropa': {'camisa': {'talla': 'M', 'color': 'Azul'}, 'jeans': {'talla': '32', 'color': 'Negro'}},
'electrodomesticos': {'nevera': {'marca': 'Haceb', 'precio': '3500000'}}}
Página 7 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
FORMATO JSON
Formato de intercambio de mensajes basado en clave: valor. Ejemplo:
{
"nombre": "Juan Pérez",
"edad": 30,
"ciudad": "Guayabal",
"es_colombiano": true,
"hobbies": ["leer", "correr", "programar"],
"direccion": {
"calle": "El Prado",
"numero": 123,
"barrio": "Guayabal"
}
}
Métodos diccionarios en Python
clear()
El método clear() elimina todo el contenido del diccionario.
d = {'a': 1, 'b': 2}
[Link]()
print(d) #{}
get(<key>[,<default>])
El método get() nos permite consultar el value para un key determinado.
El segundo parámetro es opcional, y en el caso de proporcionarlo es el
valor a devolver si no se encuentra la key .
d = {'a': 1, 'b': 2}
print([Link]('a')) #1
print([Link]('z', 'No encontrado')) #No encontrado
items()
El método items() devuelve una lista con los keys y values del diccionario.
Si se convierte en list se puede indexar como si de una lista normal se
tratase, siendo los primeros elementos las key y los segundos los value .
Página 8 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
d = {'a': 1, 'b': 2}
it = [Link]()
print(it) #dict_items([('a', 1), ('b', 2)])
print(list(it)) #[('a', 1), ('b', 2)]
print(list(it)[0][0]) #a
keys()
El método keys() devuelve una lista con todas las keys del diccionario.
d = {'a': 1, 'b': 2}
k = [Link]()
print(k) #dict_keys(['a', 'b'])
print(list(k)) #['a', 'b']
values()
El método values() devuelve una lista con todos los values o valores del
diccionario.
d = {'a': 1, 'b': 2}
print(list([Link]())) #[1, 2]
pop(<key>[,<default>])
El método pop() busca y elimina la key que se pasa como parámetro y
devuelve su valor asociado. Daría un error si se intenta eliminar
una key que no existe.
d = {'a': 1, 'b': 2}
[Link]('a')
print(d) #{'b': 2}
También se puede pasar un segundo parámetro que es el valor a devolver
si la key no se ha encontrado. En este caso si no se encuentra no habría
error.
d = {'a': 1, 'b': 2}
[Link]('c', -1)
print(d) #{'a': 1, 'b': 2}
Página 9 de 10
Taller N. 1
AyP
Maryém Aliria Ruiz Núñez
popitem()
El método popitem() elimina de manera aleatoria un elemento del
diccionario.
d = {'a': 1, 'b': 2}
[Link]()
print(d)
#{'a': 1}
update(<obj>)
El método update() se llama sobre un diccionario y tiene como entrada otro
diccionario. Los value son actualizados y si alguna key del nuevo
diccionario no esta, es añadida.
d1 = {'a': 1, 'b': 2}
d2 = {'a': 0, 'd': 400}
[Link](d2)
print(d1)
#{'a': 0, 'b': 2, 'd': 400}
Página 10 de 10