TypeError: 'generator' objet n'a pas d'attribut '__getitem__'

J'ai écrit une fonction génératrice qui doit renvoyer un dictionnaire. cependant lorsque j'essaie d'imprimer un domaine que j'obtiens l'erreur suivante

print row2['SearchDate']
TypeError: 'generator' object has no attribute '__getitem__'

C'est mon code

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']
De quoi vous attendiez-vous à row2 à contenir; la première ligne de la DictReader()?
oui @MartijinPieters
L'appel d'une fonction de générateur produit de l'objet du générateur, et non pas la valeur suivante à partir de ce générateur. Créer le générateur à la fois, les stocker quelque part, puis d'utiliser ce générateur pour produire des valeurs (comme hspandher montre dans leur réponse).

OriginalL'auteur MAS | 2015-06-15