python嵌套循环使用循环和文件

时间:2014-07-05 19:02:54

标签: python list for-loop

我有一个嵌套的for循环似乎无法正常工作。当外循环正在执行时,内部循环变量没有更新。

for line in file:
    record = line.split(',')
    id = record[0]
    mas_list.append(id)
    for lin in another_file:
        rec = lin.split(',')
        idd = rec[3]
        if idd == id:
        mas_list.append("some data")
        mas_list.append("some data")

现在这适用于001的id但是当我到id 002时,外部循环会跟踪它,但由于某种原因,内部循环只有第一个项目被附加到列表中

1 个答案:

答案 0 :(得分:2)

您正在使用

迭代文件对象
for lin in another_file:

在外循环的第一次迭代之后,another_file耗尽。因此,内部循环在第一次外循环迭代后永远不会执行。

如果你想这样做,你需要像这样再次打开文件

with open("another.txt") as another_file:
    for lin in another_file:
        ...

更好的是,您只能在外部循环之前收集必要的信息,并使用这样的预处理数据

# Create a set of ids from another file
with open("another.txt") as another_file:
    ids = {lin.split(',')[3] for lin in another_file}

with open("mainfile.txt") as file:
    for line in file:
        record_id = line.split(',')[0]
        mas_list.append(record_id)
        # Check if the record_id is in the set of ids from another file
        if record_id in ids:
            mas_list.append("some data")