2015-04-06 4 views
1

Je n'ai aucune idée de ce que cette erreur est causée par, ou comment y remédier. Fondamentalement, ce que j'essaie de faire est de lire à partir d'un fichier. Csv et de faire un dictionnaire à partir des informations à l'intérieur. Je l'ai déjà fait sans aucun problème, mais cette fois c'est vraiment bizarre.Python - Tombé sur l'objet "'DictReader' n'est pas indicable"

#Read External Data 
DataNames = os.listdir("Data") 

#Import Classes 
ClassesPath = os.path.join("Data", DataNames[1]) 
Classes = open(ClassesPath) 
global ClassesDict 
ClassesDict = csv.DictReader(Classes, delimiter=",") 

Lors de la tentative d'exécution

print(ClassesDict) 

ou

print(ClassesDict["ID"]) 

il me donne toujours l'erreur:

TypeError: 'DictReader' object is not subscriptable 

Je sais que les listes, dictionnaires, etc. sont des objets indicables, mais ma variable "ClassesDict" est (ou devrait être) un dictionnaire.

Merci beaucoup d'avance.

+0

Est-ce que tout votre code? Vous ne montrez pas où vous itérez sur le 'DictReader' pour en extraire les lignes ... ne le faites-vous pas? – kindall

+0

Je, en effet, ne l'ai pas fait. Je pensais avoir la variable seule fonctionnerait comme est. – Medallyonify

Répondre

3

classe csv.DictReader fournit une interface itérables sur la source de données csv où les articles sont des dictionnaires:

reader = csv.DictReader(Classes, delimiter=",") 
for row in reader: 
    print(row["ID"])