2017-01-20 3 views
0

Ich versuche verschiedene Prüfungen basierend auf der Indexnummer eines Wörterbuchs durchzuführen. Also, wenn Index == 0, mach etwas, andernfalls wenn Index> 0, mach etwas anderes.Check OrderedDict basierend auf Index in CSV?

Ich habe versucht, OrderedDict verwenden und indexieren basierend auf items(). Aber wenn ich sage, od.items()[0], gibt es mir nur den Namen des ersten Elements. Nicht die Möglichkeit, eine if Bedingung zu schreiben, basierend darauf, ob das erste Element bereits überprüft wurde.

Auch würde ich lieber nicht meine Bedingung basierend auf dem tatsächlichen Wert in der Datei example.csv überprüfen, da es täglich ändern wird.

Hier sind meine Code und Beispieldaten in der CSV-Datei.

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 von was von der CSV? – martineau

+0

Was ist die "Indexnummer eines Wörterbuchs"? Ich denke, Sie wollen 'enumerate' –

Antwort

0

Vielleicht könnten Sie etwas tun. (Das folgende Beispiel ist in python3 Syntax geschrieben).

#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

Was möchten Sie hier tun:' zip (collections.count(), od) '? Ich denke, du willst 'enumerate (od)' –

+0

Dank Cyber-Cap und juanpa.arrivillaga. Den Index vor die Reihe zu setzen und aufzuzählen (od) gibt mir genau das, was ich wollte. Ich änderte die ursprüngliche Antwort mit der Korrektur. – cordaco