比较列表中的元素? (蟒蛇)

时间:2020-06-01 20:58:55

标签: python list list-comprehension list-comparison

我正在使用列表中的几个文件名,其中我已经选择了以txt结尾的文件以进行一些处理:

Error   CS0120  An object reference is required for the non-static field, method, or property 

Error   CS0120  An object reference is required for the non-static field, method, or property 

Error   CS0120  An object reference is required for the non-static field, method, or property

Error   CS0120  An object reference is required for the non-static field, method, or property 

在这种情况下,staticmy_files = ['my_doc_raw.txt', 'my_doc_transformed.txt', 'some_other_doc.txt', 'requirements.txt'] 中只有一个文件需要进行下游处理,而无需同时进行。确保只保留一个的最佳方法是什么?我很难弄清楚如何通过删除两个文件来进行此过滤。

请注意,我有一个脚本来确定列表中各项的数据类型。例如:

my_doc_raw.txt

因此,考虑到我现在有重复的my_doc_transformed.txt,这使我更加接近,但是我不确定从那里去还是采用其他方法。有提示吗?

1 个答案:

答案 0 :(得分:0)

只要您有一种明确且行之有效的方法来规范化您的文件名(例如您的 data_type() 函数,那么您所要做的就是保留一个列表来存储您处理过的每种类型。

这是我的实现:

my_files = ['my_doc_raw.txt', 'my_doc_transformed.txt', 'some_other_doc.txt', 'requirements.txt']

completed = []

for file in my_files:
    file_type = data_type(file)

    if file_type not in completed:
        #Add type to completed so we don't do it again
        completed.append(file_type)
        upstream_process(file)  #Placeholder for whatever processing you want to do

它所做的只是检查数据类型是否在我们的列表中。如果没有,则将其添加到列表中并进行处理。这可以防止任何数据类型运行两次。