Aplicaciones y Ejemplos Prácticos
Ordenando Catálogos de Productos
Un caso de uso común para ordenar listas de diccionarios con devoluciones de llamada es en aplicaciones de comercio electrónico, donde es necesario ordenar catálogos de productos según varios criterios, como precio, calificación o popularidad.
products = [
{"name": "Product A", "price": 29.99, "rating": 4.5, "category": "Electronics"},
{"name": "Product B", "price": 19.99, "rating": 3.8, "category": "Home"},
{"name": "Product C", "price": 39.99, "rating": 4.2, "category": "Electronics"},
{"name": "Product D", "price": 24.99, "rating": 4.0, "category": "Home"}
]
def sort_by_price_and_rating(item):
return (item["price"], -item["rating"])
sorted_products = sorted(products, key=sort_by_price_and_rating)
print(sorted_products)
Salida:
[{'name': 'Product B', 'price': 19.99, 'rating': 3.8, 'category': 'Home'}, {'name': 'Product D', 'price': 24.99, 'rating': 4.0, 'category': 'Home'}, {'name': 'Product A', 'price': 29.99, 'rating': 4.5, 'category': 'Electronics'}, {'name': 'Product C', 'price': 39.99, 'rating': 4.2, 'category': 'Electronics'}]
En este ejemplo, la función sort_by_price_and_rating()
se utiliza como función de devolución de llamada para ordenar el catálogo de productos primero por la clave 'price' en orden ascendente y luego por la clave 'rating' en orden descendente.
Ordenando Datos de Usuarios
Otra aplicación práctica de la ordenación de listas de diccionarios con devoluciones de llamada es en la gestión de datos de usuarios, como perfiles de clientes o registros de empleados.
users = [
{"name": "Alice", "age": 25, "email": "alice@example.com", "department": "Marketing"},
{"name": "Bob", "age": 30, "email": "bob@example.com", "department": "IT"},
{"name": "Charlie", "age": 35, "email": "charlie@example.com", "department": "Finance"},
{"name": "David", "age": 28, "email": "david@example.com", "department": "IT"}
]
def sort_by_department_and_age(item):
return (item["department"], item["age"])
sorted_users = sorted(users, key=sort_by_department_and_age)
print(sorted_users)
Salida:
[{'name': 'Bob', 'age': 30, 'email': 'bob@example.com', 'department': 'IT'}, {'name': 'David', 'age': 28, 'email': 'david@example.com', 'department': 'IT'}, {'name': 'Alice', 'age': 25, 'email': 'alice@example.com', 'department': 'Marketing'}, {'name': 'Charlie', 'age': 35, 'email': 'charlie@example.com', 'department': 'Finance'}]
En este ejemplo, la función sort_by_department_and_age()
se utiliza como función de devolución de llamada para ordenar los datos de usuarios primero por la clave 'department' en orden ascendente y luego por la clave 'age' en orden ascendente.
Ordenando Datos Geográficos
Las funciones de devolución de llamada también se pueden utilizar para ordenar datos geográficos, como una lista de ciudades o ubicaciones, según varios criterios como latitud, longitud o población.
locations = [
{"city": "New York", "latitude": 40.730610, "longitude": -73.935242, "population": 8804190},
{"city": "Los Angeles", "latitude": 34.052235, "longitude": -118.243683, "population": 3971883},
{"city": "Chicago", "latitude": 41.878113, "longitude": -87.629799, "population": 2746388},
{"city": "Houston", "latitude": 29.760427, "longitude": -95.369804, "population": 2304580}
]
def sort_by_latitude_and_population(item):
return (item["latitude"], -item["population"])
sorted_locations = sorted(locations, key=sort_by_latitude_and_population)
print(sorted_locations)
Salida:
[{'city': 'Houston', 'latitude': 29.760427, 'longitude': -95.369804, 'population': 2304580}, {'city': 'Los Angeles', 'latitude': 34.052235, 'longitude': -118.243683, 'population': 3971883}, {'city': 'Chicago', 'latitude': 41.878113, 'longitude': -87.629799, 'population': 2746388}, {'city': 'New York', 'latitude': 40.730610, 'longitude': -73.935242, 'population': 8804190}]
En este ejemplo, la función sort_by_latitude_and_population()
se utiliza como función de devolución de llamada para ordenar las ubicaciones primero por la clave 'latitude' en orden ascendente y luego por la clave 'population' en orden descendente.
Estos ejemplos demuestran cómo las funciones de devolución de llamada se pueden utilizar para ordenar listas de diccionarios en una variedad de aplicaciones prácticas, lo que te permite personalizar la lógica de ordenación para satisfacer tus necesidades específicas.