我正在尝试合并两个列表,如果它们包含某个单词。
我的代码工作正常,直到我尝试将其转移到函数下或for循环下 我什么时候得到:
TypeError: argument 2 to map() must support iteration
我也尝试按其他帖子中的建议将map(None, a,b)
替换为itertools.imap(None, a,b)
,但获取:
TypeError: 'int' object is not iterable
有什么建议吗?
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
的输出:
a = [' ', u'GOVERNMENTAL', u'BUSINESS-TYPE']
b
的输出:
b = [u'ASSETS', u'ACTIVITIES', u'ACTIVITIES', u'2009', u'2008', u'JEDO']
需要它:
[ u'ASSETS', u'GOVERNMENTAL ACTIVITIES', u'BUSINESS-TYPE ACTIVITIES', u'2009', u'2008', u'JEDO']
因此for map循环后的for循环。
答案 0 :(得分:1)
如果在迭代blank3
之后您从未遇到过'政府'和'活动',a
或b
可能为0,这会导致地图失败。您可以将a
和b
作为空列表启动,或在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']