如何强制列表中项目的索引?

时间:2013-03-31 14:20:25

标签: python list dictionary

我设置了一个脚本,我在给定目录中搜​​索包含“cover”,“resume”和“references”的pdf文件,将它们插入到列表中,然后合并它们。搜索词看起来像这样,其中键是搜索词,值是应该插入列表的索引:

searchTerms = {"cover": 0,
    "resume":1,
    "references":2}

初始列表如下所示:

pdfsToBeMerged = ["placeholder", "placeholder", "placeholder"]

在搜索完文件并将其附加到此列表后,我遍历列表并删除所有“占位符”项。然后合并这些文件。

我想知道是否有一个Python函数会以某种方式自动化这个“占位符”步骤?就像一个插入searchTerm并将其附加到索引处的空白列表并保持的函数。例如,如果首先找到“引用”文件,它将被附加到索引2并且保持,无论它是否找到其他文件?

2 个答案:

答案 0 :(得分:1)

列出清单:

pdfsToBeMerged = [[], [], []]

然后您可以append到正确的列表。

for term in searchTerms.keys()
    if term in filetext:
        pdfsToBeMerged[searchTerms[term]].append(filename)

答案 1 :(得分:0)

这不是您可能想要的解决方案,但是包含占位符可能不是一个大问题。

更简洁的方法如下:

# Initialize with None instead of "placeholder"
pdfs_to_be_merged = [None] * 3

# Insertion as usual
pdfs_to_be_merged[index] = pdf

# Get the cleaned list
[pdf for pdf in pdfs_to_be_merged if pdf is not None]