Я считаю, что более строгий подход просто относится к манипулированию более простой версией, чтобы использовать определенные c значения, которые дают желаемый результат, который вам нужен.
Более простой подход предлагает такую сортировку -
books.sort(
key=lambda book: mean(book.reviews + [3, 3, 3]),
reverse=True
)
Вместо этого вы можете сделать что-то вроде этого -
books.sort(
key=lambda book: mean(book.reviews + [μ] * n),
reverse=True
)
Где μ - средний рейтинг по всем книгам, а n - число, которое вы бы задали, проверьте результат, а затем отрегулируйте снова в зависимости от того, работала ли сортировка так, как вы хотели. (Похоже на подход «догадаться и проверить»!) Чем выше значение n, тем выше предпочтение отдается книгам с большим количеством рецензий.