Как я могу частично отсортировать список Python?

Я написал кэш компилятора для 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 самых старых элементов в списке, совокупный размер которых превышает определенное значение.

9
задан Frerich Raabe 29 December 2010 в 16:48
поделиться