从字典的键中选择两点之间的所有日期时间对象

时间:2017-02-10 14:41:52

标签: python-3.x

我有一个包含日期嵌入文件名的bazillion文件。我将文件解析为dict,其中键是从名称中提取的日期时间,值是路径。

我想从日期时间在时间​​A和时间B之间的集合中选择所有文件。

我的第一个想法是将dict转换为元组列表然后排序。

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()

严格来说,这已经够好了,但它看起来并不优雅。有没有更好的方法来选择这些日期?

1 个答案:

答案 0 :(得分:1)

执行一个行列表解析时,可以过滤表达式中的输出,如下面的代码所示。如果A和B之间没有日期,那么您将得到一个空字典,因为所有项都不匹配if条件。

 {k:v for k, v in file_list if k >= time_a and k <= time_b}