我有一个数不胜数的文件,文件名中嵌入了日期。我将文件解析为dict,其中键是从名称中提取的日期时间,而值是路径。
我想从日期时间在时间A和时间B之间的集合中选择所有文件。
我的第一个想法是将字典转换为元组列表,然后进行排序。
file_list = [(k, v) for k, v in file_dict.items()]
file_list = sorted(file_list, key = lambda x: x[0])
然后,我将使用for循环从两点之间的列表中进行选择。
first = -1
last = -1
for i in range(len(file_list)):
if first < 0 and file_list[i] > time_a:
first = i
if last < 0 and file_list[i] > time_b:
last = i
if first > -1 and last > -1:
new_dict = {k: v for k, v in file_list[first:last]}
else:
whatever()
严格来说,这已经足够好了,但是看起来并不优雅。有没有更好的方法来选择这些日期?
进行一行列表理解时,可以在表达式中过滤输出,如下面的代码所示。如果A和B之间没有日期,则您将得到一个空字典,因为所有项目都不符合if条件。
{k:v for k, v in file_list if k >= time_a and k <= time_b}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句