Patrones de Programación en Python para Manejo de Listas y Diccionarios
Clasificado en Informática
Escrito el en
español con un tamaño de 6,87 KB
Algoritmos Esenciales para la Gestión de Datos en Python
1. Función de Búsqueda
Esta función permite localizar un elemento dentro de una lista de diccionarios utilizando una clave específica.
def buscar_algo(dato):
for elemento in lista:
if elemento["clave"] == dato:
return elemento
return None2. Registro de Información
Registro Simple
Procedimiento básico para agregar un nuevo diccionario a la lista (pide agregar algo).
def registrar_algo(dato1, dato2):
nuevo = {
"dato1": dato1,
"dato2": dato2
}
lista.append(nuevo)
return TrueRegistrar Validando que no Exista
Asegura que no se dupliquen registros basados en un código identificador.
def registrar_algo(codigo, dato1, dato2):
objeto = buscar_algo(codigo)
if objeto is not None: # Si el objeto ya existe, no se registra
return False
for x in lista:
if x["codigo"] == codigo:
return False
nuevo = {
"codigo": codigo,
"dato1": dato1,
"dato2": dato2
}
lista.append(nuevo)
return TrueRegistrar Usando Búsqueda
Se utiliza cuando el registro depende de elementos que deben existir previamente.
def registrar_algo(codigo1, codigo2, dato):
objeto1 = buscar_objeto1(codigo1)
objeto2 = buscar_objeto2(codigo2)
if objeto1 is None:
return False
if objeto2 is None:
return False
nuevo = {
"objeto1": objeto1, # El que está entre comillas es igual al de la lista
"objeto2": objeto2,
"dato": dato
}
lista.append(nuevo)
return TrueRegistrar con Cálculo
Permite generar un registro que incluye una operación aritmética basada en datos existentes.
def registrar_algo(codigo1, codigo2, cantidad):
objeto1 = buscar_objeto1(codigo1)
objeto2 = buscar_objeto2(codigo2)
if objeto1 is None:
return False
if objeto2 is None:
return False
resultado = objeto1["precio"] * cantidad
nuevo = {
"objeto1": objeto1,
"objeto2": objeto2,
"cantidad": cantidad,
"resultado": resultado
}
lista.append(nuevo)
return True3. Visualización de Información
Mostrar Información Normal (Sin control de repeticiones)
def mostrar_info(dato):
objeto = buscar_objeto(dato)
if objeto is None:
print("No existe")
return
for x in lista:
if condicion: # Puede ser: if condicion1 and condicion2:
print(x["dato1"], x["dato2"])Mostrar Información (Sin repeticiones)
Utiliza una lista auxiliar para garantizar que los datos mostrados sean únicos.
def mostrar_algo(dato):
objeto = buscar_objeto(dato) # Necesitas verificar que algo exista
if objeto is None: # "Si no existe informar"
print("No existe")
return
lista_aux = []
for x in lista:
if x["dato"] == valor: # O la condición que sea
dato_guardar = x["otro_dato"]["otro_dato"]
if dato_guardar not in lista_aux:
lista_aux.append(dato_guardar)
if len(lista_aux) == 0:
print("No hay resultados")
else:
for v in lista_aux:
print(v)4. Operaciones de Agregación y Estadísticas
Acumulador (Sumar totales)
Útil para obtener montos totales o recaudaciones.
def calcular_total():
dato = input("Ingrese dato: ")
total = 0
for x in lista:
if condicion: # La condición sería if x["clave"] == dato o similar
total += valor
print("-", total)Contador (Contar ocurrencias)
Determina la cantidad total de elementos que cumplen una condición.
def contar_algo():
contador = 0
for x in lista:
if condicion: # La condición sería if x["clave"] == dato o similar
contador += 1
print(contador)Promedio (Media aritmética)
def calcular_promedio(dato):
objeto = buscar_algo(dato)
if objeto is None:
print("No existe")
return
suma = 0
contador = 0
for x in lista:
if condicion:
suma += valor # El valor es x["clave"]
contador += 1
if contador == 0:
print("No hay resultados")
else:
promedio = suma / contador
print(promedio)5. Validaciones Avanzadas
Registrar Validando que no Exista una Combinación
Evita duplicados de combinaciones específicas (ej. misma fecha y mismo cliente).
def registrar_algo(objeto1, objeto2, dato):
obj1 = buscar_objeto1(objeto1)
obj2 = buscar_objeto2(objeto2)
if obj1 is None:
return False
if obj2 is None:
return False
# VALIDAR DUPLICADO
for x in lista:
if x["objeto1"] == obj1 and x["objeto2"] == obj2:
return False
nuevo = {
"objeto1": obj1, # El ["objeto1"] siempre igual al de la lista
"objeto2": obj2,
"dato": dato
}
lista.append(nuevo)
return True6. Resumen de Operadores Lógicos y Comparaciones
- 1) Igualdad: (de ese cliente, de esa competencia, de esa fecha, de ese producto)
if x["algo"] == valor: - 2) Mayor que: (superior a, mayor a, más de)
if x["valor"] > numero: - 3) Mayor o igual: (igual o superior, mayor o igual)
if x["valor"] >= numero: - 4) Menor que: (menor a, inferior a)
if x["valor"] < numero: - 5) Diferente: (distinto de, excepto)
if x["algo"] != valor: - 6) AND: (y además, misma fecha y misma sala, cliente y producto, competencia y puntaje)
if condicion1 and condicion2:
Ejemplos:if p["tirador"] == tir and p["competencia"] == com:if r["fecha"] == fecha and r["sala"] == sala: - 7) OR: (o, una cosa u otra)
if condicion1 or condicion2:
Ejemplo:if prod["tipo"] == "Bonos" or prod["tipo"] == "Fondos": - 8) NOT IN: (sin repetir, sin repeticiones, únicos)
if valor not in lista_aux: - 9) == None: (debe existir previamente, validar existencia)
if objeto == None: return False(Idea: no encontrado) - 10) != None: (que no exista otro, nombre único, evitar duplicados)
if objeto != None: return False(Idea: ya encontrado)