Я написал кэш компилятора для MSVC (во многом как ccache для gcc ). Одна из вещей, которые мне нужно сделать, это удалить самые старые объектные файлы в моем каталоге кеша, чтобы обрезать кеш до определенного пользователем размера.
Прямо сейчас у меня в основном есть список кортежей, каждый из которых является последним время доступа и размер файла:
# First tuple element is the access time, second tuple element is file size
items = [ (1, 42341),
(3, 22),
(0, 3234),
(2, 42342),
(4, 123) ]
Теперь я Мне бы хотелось выполнить частичную сортировку в этом списке, чтобы отсортировать первые N элементов (где N - количество элементов, так что сумма их размеров превышает 45000). Результат должен быть примерно таким:
# Partially sorted list; only first two elements are sorted because the sum of
# their second field is larger than 45000.
items = [ (0, 3234),
(1, 42341),
(3, 22),
(2, 42342),
(4, 123) ]
Меня действительно не волнует порядок несортированных записей, мне просто нужны N самых старых элементов в списке, совокупный размер которых превышает определенное значение.