【发布时间】:2015-08-30 21:14:22
【问题描述】:
我写了一个生成函数,它应该返回一个字典。但是,当我尝试打印字段时,出现以下错误
print row2['SearchDate']
TypeError: 'generator' object has no attribute '__getitem__'
这是我的代码
from csv import DictReader
import pandas as pd
import numpy as np
def genSearch(SearchInfo):
for row2 in DictReader(open(SearchInfo)):
yield row2
train = 'minitrain.csv'
SearchInfo = 'SearchInfo.csv'
row2 = {'SearchID': -1}
for row1 in DictReader(open(train)):
if 'SearchID' in row1 and 'SearchID' in row2 and row1['SearchID'] == row2['SearchID']:
x = deepcopy( row1 )
#x['SearchDate'] = row2['percent']
x.update(row2)
print 'new'
print x
else:
#call your generator
row2 = genSearch(SearchInfo)
print row2['SearchDate']
【问题讨论】:
-
您期望
row2包含什么;DictReader()的第一行? -
是的@MartijinPieters
-
调用生成器函数会生成生成器对象,而不是生成器的下一个值。创建一次生成器,将其存储在某处,然后使用该生成器生成值(如 hspandher 在他们的回答中所示)。
标签: python python-2.7 dictionary yield yield-return