2012-02-15 11 views
-1

ある単語が含まれている場合、2つのリストをマージしようとしています。forループでマップ関数が機能しない

私のコードは、関数またはforループの下に転送しようとするまでうまく動作します。
私が入手できます:

TypeError: argument 2 to map() must support iteration 

は、私はまた、他の記事で示唆しかし得るようitertools.imap(None, a,b)map(None, a,b)を交換してみました:

TypeError: 'int' object is not iterable 

任意の提案を? aため

a = 0 
b = 0 
row_combine = [] 
for row in blank3: 

    if 'GOVERNMENTAL' in row: 
     a = row 
    if 'ACTIVITIES' in row: 
     b = row 
c = map(None, a,b) #problem is here 
for row in c: 
    row1 = [] 
    if row[0] == None: 
     row1.append(''.join([''] + [row[1]])) 
    else: 
     row1.append(''.join([row[0]] + [' '] + [row[1]])) 
    row_combine.append(''.join(row1)) 

出力:

a = [' ', u'GOVERNMENTAL', u'BUSINESS-TYPE'] 

b用出力:

[ u'ASSETS', u'GOVERNMENTAL ACTIVITIES', u'BUSINESS-TYPE ACTIVITIES', u'2009', u'2008', u'JEDO'] 

したがってマップ関数の後にループのための:

b = [u'ASSETS', u'ACTIVITIES', u'ACTIVITIES', u'2009', u'2008', u'JEDO'] 

それがする必要があります。

+0

は言うことはできませんあなたがここでやろうとしていることですが、それが何であれ、私はかなり地図がそれを行う方法ではありません。 –

答えて

1

blank3を反復した後、「政府」と「アクティビティ」の両方が発生しない場合、aまたはbは0になり、マップが失敗する可能性があります。君は空のリストをオフabを開始するか、一方map()

前に、あなたの入力をチェックし、代わりに、forループの可能性:得

row_combine = map(lambda x, y: ((x or '') + ' ' + (y or '')).strip(), a, b) 

[u'ASSETS', u'GOVERNMENTAL ACTIVITIES', u'BUSINESS-TYPE ACTIVITIES', u'2009', u'2008', u'JEDO'] 
+0

助けをありがとう! – snown

関連する問題