python中的If-Else:返回到前面的循环

python中的If-Else:返回到前面的循环,python,if-statement,Python,If Statement,我试图根据键的名称将键附加到其他键上,但当我遍历if row.has_key(ft_test)语句时,如果该行没有来自ft_test的值,它不会附加,并继续执行下一个if语句。我想让代码返回fieldMap.keys()行中的for ft。有没有其他的说法来证明这一点,还是我没有希望 #!/usr/bin/env python import sys import csv import glob fieldMap = {'zipcode':['Zip5', 'zip9','zipcode'

我试图根据键的名称将键附加到其他键上,但当我遍历if row.has_key(ft_test)语句时,如果该行没有来自ft_test的值,它不会附加,并继续执行下一个if语句。我想让代码返回fieldMap.keys()行中的for ft。有没有其他的说法来证明这一点,还是我没有希望

#!/usr/bin/env python
import sys 
import csv 
import glob 

fieldMap = {'zipcode':['Zip5', 'zip9','zipcode','ZIP','zip_code','zip','ZIPCODE'],
        'firstname':['firstname','FIRSTNAME'],and insert
        'lastname':['lastname','LASTNAME'],
        'cust_no':['cust_no','CUST_NO'], 
        'user_name':['user_name','USER_NAME'],# the keys here are ft
        'status':['status','STATUS'],# status must be filled
        'cancel_date':['cancel_date','CANCEL_DATE'],
        'reject_date':['REJECT_DATE','reject_date'],
        'streetaddr':['streetaddr','address2','STREETADDR','ADRESS2','ADDRESS','address'],
        'streetno':['streetno','STREETNO'],
        'streetnm':['streetnm','STREETNM'],
        'suffix':['suffix','SUFFIX'], 
        'city':['city','CITY'],
        'state':['state','STATE'],
        'phone_home':['phone_home','PHONE_HOME'],
        'email':['email','EMAIL']
        }


def readFile(fn,ofp):

    count = 0
    CSVreader = csv.DictReader(open(fn,'rb'), dialect='excel', delimiter=',')
    for row in CSVreader:
            count+= 1
            if count == 1:
                    hdrlist = []
                    for ft in fieldMap.keys():
                            hdrlen = len(hdrlist) 
                            for ft_test in fieldMap[ft]:
                                    if row.has_key(ft_test): 
                                            hdrlist.append(ft_test)   
                            if hdrlen != len(hdrlist)+1: 
                                    print "Cannot find a key for %s" % ft 
                                    sys.exit(1) 

添加
break
关键字:

hdrlen = len(hdrlist) # hdrlen equals the number of headers in header list
for ft_test in fieldMap[ft]:# ft_test = values of keys in field map
    if row.has_key(ft_test): # if a row has a key from the values from fieldMap # why does it stop after testing only one key??????????????
        hdrlist.append(ft_test)
        break

如果
的大小写为
True
时,它将
中断
内部
for循环

此代码在我看来非常不可读。使用
中断
退出内部循环loop@CyberneticTwerkGuruOrc“太多评论会扼杀评论”的完美例子.一个建议:将制表位/间距设置为4,而不是8。