迭代嵌套循环

时间:2014-08-28 14:39:27

标签: list python-2.7 for-loop dictionary nested-loops

我有一个list和一个dict

一旦我进入嵌套的for循环,第一个for循环就不会继续迭代这些值。这只允许我迭代一次,无论我的if语句是否成功。

for OldRecord in StripOldList:
    OldSplitRec = OldRecord.split('_')
    value1 = OldSplitRec[1]
    value2 = OldSplitRec[2]
    value3 = OldSplitRec[3]
    value3 = OldSplitRec[4]
    value3 = OldSplitRec[5]

    diffdict = {}
    for SomeRec in DiffSplitText:
        key1, key2, key3, key4, key5= SomeRec.strip().split('_')
        FinalLabel = key1+"_"+key2+"_"+key3+"_"+key4+"_"key5+"_"+key6
        diffdict[key1,key2,key3,key4,key5.strip()] = FinalLabel

        IsNewEdition = True
        IsNewVersion =  True
        IsNewFileType = True

        if (value1 == key1 and value2 == key2):
           IsNewFileType = False

           if (value3 >= key3):
               IsNewEdition = False

           if (value5 >= key5):
               IsNewVersion = False
        if (IsNewFileType == True):
           print "No Match"
        elif (IsNewEdiion == True):
           print  "Found new edition"
           link1.write(SomeRec)
        elif (IsNewVersion == True):
           print "Found new version"
           link2.write(SomeRec)

然后,我将value1key1value5key6进行比较。我的if语句有效,但只执行一次,所以这是我唯一关注的部分。

它的文件示例如下:

Ex_299_Jabba_1993_09_20150805

所以如果旧列表有:

Ex_299_Jabba_1993_09_20130805
Ex_298_Jabba_1993_09_20130805
Ex_297_Jabba_1993_09_20130805

并且新字典有:

Ex_299_Jabba_1993_09_20140805
Ex_298_Jabba_1994_09_20130805
Ex_297_Jabba_1993_09_20130805

它应该识别字典中更新的文件名并将它们写入正确的位置(用**强调)。

Ex_299_Jabba_1993_09_**20140805**
Ex_298_Jabba_**1994**_09_20130805

1 个答案:

答案 0 :(得分:0)

来自你的评论:

  

DiffSplitText只是从

中提取文件名的文本文件

这就是问题:如果DiffSplitTextfile对象,那么它就是一个迭代器。您的嵌套循环

for SomeRec in DiffSplitText:

迭代文件中的所有行,但在第一次迭代后,that file iterator is exhausted

如果要再次读取行,则必须在外循环的每次迭代中使用DiffSplitText.seek(0)重置迭代器。