如何解决新建/更新文件python列表问题

如何解决新建/更新文件python列表问题,python,arrays,list-comprehension,python-3.6,Python,Arrays,List Comprehension,Python 3.6,我想将文件名和修改后的日期时间戳存储在Python3.6中特定文件夹的列表格式中 假设在第1天,文件夹中有两个文件,因此我有以下列表: day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]] 现在,在第2天,创建了另一个新文件“f3”(添加了新的内部列表),并更新了现有文件“f2”(时间戳更改): 我想在两个列表之间运行一个逻辑,它将生成一个简单的列表,该列表将为我提供需要重新提取的名称 out

我想将文件名和修改后的日期时间戳存储在Python3.6中特定文件夹的列表格式中

假设在第1天,文件夹中有两个文件,因此我有以下列表:

day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]]
现在,在第2天,创建了另一个新文件“f3”(添加了新的内部列表),并更新了现有文件“f2”(时间戳更改):

我想在两个列表之间运行一个逻辑,它将生成一个简单的列表,该列表将为我提供需要重新提取的名称

output = ["f2", "f3"]
并用新添加的列表更新第1天列表(保留在最新比较期间删除的那些文件的内部列表)

以前很简单,我的范围仅限于新文件,因此我维护了一个简单的文件名列表,并执行以下操作以获取新添加的文件:

delta = [item for item in new_list if item not in file_list]

有什么帮助吗?

如果你不想使用字典,你可以用这样的方法修改你的代码

delta = [item[0] for item in new_list if item[0] not in file_list and item[1] > date_cutoff]

我还建议将
项[1]
转换为datetime对象进行比较。

如果您不想使用字典,可以使用类似的方法修改代码

delta = [item[0] for item in new_list if item[0] not in file_list and item[1] > date_cutoff]

我还建议将
项[1]
转换为datetime对象进行比较。

最好的方法是只选择内部列表中的第一个条目,如下所示

delta = [item[0] for item in day_2_List if item not in day_1_List]

注意:只有当您能够确保day_2_列表'f2'的数据时间高于day_1_列表开始时,这才有帮助。

最好的方法是只选择内部列表中的第一个条目,如下所示

delta = [item[0] for item in day_2_List if item not in day_1_List]

注意:只有当您能够确保day_2_列表'f2'的数据时间高于day_1_列表开始时,这才有帮助。

从列表中构建DICT开始,这样可以更高效地搜索相关文件名:

day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]]
day_2_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-04-01T12:23:18Z"], ["f3", "2019-04-02T07:36:45Z"]]

day1 = {filename:time for filename, time in day_1_List}
day2 = {filename:time for filename, time in day_2_List}

delta = [filename for filename in day2 if filename not in day1 or day1[filename]<day2[filename]]
print(delta)
# ['f2', 'f3']

从列表中构建dict开始,这样可以更高效地搜索相关文件名:

day_1_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-03-31T07:36:45Z"]]
day_2_List = [["f1", "2019-03-27T07:36:45Z"], ["f2", "2019-04-01T12:23:18Z"], ["f3", "2019-04-02T07:36:45Z"]]

day1 = {filename:time for filename, time in day_1_List}
day2 = {filename:time for filename, time in day_2_List}

delta = [filename for filename in day2 if filename not in day1 or day1[filename]<day2[filename]]
print(delta)
# ['f2', 'f3']

准备一个dict似乎更有用,key=filename和value=data我也想到了。你能建议哪一个在处理时间上更有效吗?@Wonkaacces按文件名使用cost(1)来更新日期。使用d.keys()您将获得文件名列表。您还可以将列表作为值来记录修改日期的历史记录。准备一份dict似乎更有用,key=filename和value=data我也想到了这一点。您能建议哪一个在处理时间方面更有效吗?@Wonkaacces with cost(1)按文件名更新日期。使用d.keys()您将获得文件名列表。您还可以将列表作为值来拥有历史修改日期。已经这样做了,但没有增加问题,因为它已经很庞大:例如:from dateutil import parser dt1=parser.parse(“2019-03-27T07:36:45Z”)dt2=parser.parse(dt2)print(dt2>dt1)已经这样做了,但没有添加到问题中,因为它已经很庞大:例如:from dateutil import parser dt1=parser.parse(“2019-03-27T07:36:45Z”)dt2=parser.parse(dt2)print(dt2>dt1)就连我也对dict和list持怀疑态度。谢谢你的建议。我还需要一个输出,该输出将为我提供最新文件中所有常用键和时间戳,用于所有这些常用键和新添加的键和时间戳(用于更新记录JSON文件(字典)要用作day_3_dict。我添加了一个示例,说明如何构建包含未更改文件的dict。甚至我对dict和list之间的关系也持怀疑态度。感谢您的建议。我还需要一个输出,该输出将为我提供最新文件中所有公共密钥和时间戳,用于所有这些公共以及新添加的文件(这是为了更新要用作day_3_dict的记录JSON文件(字典)。我添加了一个示例,说明如何构建未更改文件的dict。