2017-01-20 2 views
0

J'essaie de faire différentes vérifications en fonction du numéro d'index d'un dictionnaire. Donc, si index == 0, faites quelque chose, sinon si index> 0, faites autre chose.CheckedDict basé sur l'index en csv?

J'essayais d'utiliser OrderedDict et l'indexer en fonction de items(). Mais si je dis, od.items()[0], cela me donne juste le nom du premier élément. Pas la possibilité d'écrire un if conditionnel selon que le premier élément a déjà été vérifié.

Aussi je préférerais ne pas vérifier mon conditionnel basé sur la valeur réelle dans le dossier example.csv, puisqu'il changera tous les jours.

Voici mon code et mes données d'exemple dans le fichier csv.

Example.csv

Key_abc, Value894 
Key_xyz, Value256 
Key_hju, Value_567 

code:

with open('example.csv','rb') as f: 
    r = csv.reader(f) 
    od = collections.OrderedDict(r) 
    for row in od: 
     if od.items() == 0: 
      print 'do some checks and run code' 
      print row, od[row] 
     elif od.items() > 0: 
      print 'go through code without checks' 
      print row, od[row] 
+0

Index de quoi de la csv? – martineau

+0

Qu'est-ce que le "numéro d'index d'un dictionnaire"? Je pense que vous voulez 'enumerate' –

Répondre

0

Peut-être que vous pourriez faire quelque chose comme ça. (L'exemple ci-dessous est écrit en python3 syntaxe).

#ExampleCode 
with open('example.csv') as f: 
    r = csv.reader(f) 
    od = collections.OrderedDict(r) 
    for index, row in zip(collections.count(), od): 
     if index == 0: 
      print('do some checks and run code') 
      print(row, od[row]) 
     elif index > 0: 
      print('go through code without checks') 
      print(row, od[row]) 
+0

qu'essayez-vous de faire ici:' zip (collections.count(), od) '? Je pense que vous voulez 'énumérer (od)' –

+0

Merci cyber-cap et juanpa.arrivillaga. Mettre l'index devant la rangée et énumérer (od) me donne exactement ce que je voulais. J'ai modifié la réponse initiale avec la correction. – cordaco