Практические применения и примеры
Сортировка каталогов товаров
Одним из распространенных случаев использования сортировки списков словарей с обратными вызовами (callback-функциями) является электронная коммерция, где необходимо сортировать каталоги товаров по различным критериям, таким как цена, рейтинг или популярность.
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)
Результат:
[{'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'}]
В этом примере функция sort_by_price_and_rating()
используется в качестве callback-функции для сортировки каталога товаров сначала по ключу 'price' в порядке возрастания, а затем по ключу 'rating' в порядке убывания.
Сортировка пользовательских данных
Другим практическим применением сортировки списков словарей с обратными вызовами является управление пользовательскими данными, такими как профили клиентов или записи сотрудников.
users = [
{"name": "Alice", "age": 25, "email": "[email protected]", "department": "Marketing"},
{"name": "Bob", "age": 30, "email": "[email protected]", "department": "IT"},
{"name": "Charlie", "age": 35, "email": "[email protected]", "department": "Finance"},
{"name": "David", "age": 28, "email": "[email protected]", "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)
Результат:
[{'name': 'Bob', 'age': 30, 'email': '[email protected]', 'department': 'IT'}, {'name': 'David', 'age': 28, 'email': '[email protected]', 'department': 'IT'}, {'name': 'Alice', 'age': 25, 'email': '[email protected]', 'department': 'Marketing'}, {'name': 'Charlie', 'age': 35, 'email': '[email protected]', 'department': 'Finance'}]
В этом примере функция sort_by_department_and_age()
используется в качестве callback-функции для сортировки пользовательских данных сначала по ключу 'department' в порядке возрастания, а затем по ключу 'age' в порядке возрастания.
Сортировка географических данных
Callback-функции также могут быть использованы для сортировки географических данных, таких как список городов или местоположений, по различным критериям, таким как широта, долгота или население.
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)
Результат:
[{'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}]
В этом примере функция sort_by_latitude_and_population()
используется в качестве callback-функции для сортировки местоположений сначала по ключу 'latitude' в порядке возрастания, а затем по ключу 'population' в порядке убывания.
Эти примеры демонстрируют, как callback-функции могут быть использованы для сортировки списков словарей в различных практических приложениях, позволяя настроить логику сортировки в соответствии с вашими конкретными потребностями.