0

私は2つのリストを持っています、validそしてlocationsvalid文字列番号で表されるIDが含まれlocation、それに続くIDに属するid +文字列(パス)が含まれます。

私の目標は、私のIDが有効なグループの一部であるかどうかを確認することです。有効なIDと次の項目がTRUEの場合、いくつかの関数を呼び出します。INAVLID IDが検出されたら、それをスキップしてアイテムを次のIDに移動する必要があります。

私のコードは次のようになります:

valid = ['1', '2', '3', '4', '5', '6', '27', '28', '29']
locationList = ['1', '1_path1','1_path2','1_path3','2', '2_path1','2_path2','2_path3', '55','55_path1','55_path2', '3', '3_path1' ]

for item in locationList:
    if len(item)< 3: 
        if item in valid:
            print "###########lib ID found in item %s############" %item
            print "Call to bring file name function - %s" %item
            continue
        else:  
            continue            
    print "call the fix path function - %s" %item
    print "Call the Search file function -%s" %item

私の問題は、ステートメントの後、else:私のアイテムの値は'55'==無効であるということです。この時点で、リスト内のアイテムを、値が次のIDである場所(この場合'3')に移動したいと思います。

私の現在の出力は次のとおりです。

###########lib ID found in item 1############
Call to bring file name function - 1
call the fix path function - 1_path1
Call the Search file function -1_path1
call the fix path function - 1_path2
Call the Search file function -1_path2
call the fix path function - 1_path3
Call the Search file function -1_path3
###########lib ID found in item 2############
Call to bring file name function - 2
call the fix path function - 2_path1
Call the Search file function -2_path1
call the fix path function - 2_path2
Call the Search file function -2_path2
call the fix path function - 2_path3
Call the Search file function -2_path3
call the fix path function - 55_path1
Call the Search file function -55_path1
call the fix path function - 55_path2
Call the Search file function -55_path2
###########lib ID found in item 3############
Call to bring file name function - 3
call the fix path function - 3_path1
Call the Search file function -3_path1            

私はそれがなりたいです:

###########lib ID found in item 1############
Call to bring file name function - 1
call the fix path function - 1_path1
Call the Search file function -1_path1
call the fix path function - 1_path2
Call the Search file function -1_path2
call the fix path function - 1_path3
Call the Search file function -1_path3
###########lib ID found in item 2############
Call to bring file name function - 2
call the fix path function - 2_path1
Call the Search file function -2_path1
call the fix path function - 2_path2
Call the Search file function -2_path2
call the fix path function - 2_path3
Call the Search file function -2_path3
###########lib ID found in item 3############
Call to bring file name function - 3
call the fix path function - 3_path1
Call the Search file function -3_path1    
4

2 に答える 2

1

データ構造を変更することをお勧めします。

valid = set([1, 2, 3, 4, 5, 6, 27, 28, 29])

locations = [
    (1, ['path1', 'path2', 'path3']),
    (2, ['path1', 'path2']),
    (55, ['path1', 'path2'])
]

その後、あなたのコードは

for i,paths in locations:
    if i in valid:
        for path in paths:
            fix_path(path)
            search_file(path)

それができない場合は、試してください

valid = ['1', '2', '3', '4', '5', '6', '27', '28', '29']
locationList = ['1', '1_path1','1_path2','1_path3','2', '2_path1','2_path2','2_path3', '55','55_path1','55_path2', '3', '3_path1' ]

for item in locationList:
    item = item.split('_')
    if item[0] in valid:
        if len(item)==1:
            print "###########lib ID found in item %s############" %item
            print "Call to bring file name function - %s" %item
        else:  
            print "call the fix path function - %s" %item
            print "Call the Search file function -%s" %item
于 2012-07-06T22:29:23.750 に答える
1

データ構造を変更する代わりに (ただしvalid、セットに変更することをお勧めします):

valid = ['1', '2', '3', '4', '5', '6', '27', '28', '29']
locationList = ['1', '1_path1','1_path2','1_path3','2', '2_path1','2_path2','2_path3', '55','55_path1','55_path2', '3', '3_path1' ]

accept = False
for item in locationList:
    if len(item) < 3:
        accept = item in valid
        if accept:
            print "###########lib ID found in item %s############" % item
            print "Call to bring file name function - %s" % item
    elif accept:
        print "call the fix path function - %s" % item
        print "Call the Search file function -%s" % item
于 2012-07-06T22:39:30.440 に答える