我写了一个MSVC编译器缓存(类似于gcc的ccache)。其中一件事情是从我的缓存目录中删除最旧的对象文件,以将缓存修剪到用户定义的大小。
目前,我基本上有一个元组列表,每个元组都是最后访问时间和文件大小:
现在我想对这个列表进行部分排序,使前N个元素排序(其中N是元素数量,使它们的大小之和超过45000)。结果应该基本上是这样的:
目前,我基本上有一个元组列表,每个元组都是最后访问时间和文件大小:
# 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个最旧的条目。