2016-04-07 9 views
1

Ich versuche, eine CSV-Datei zu lesen, die eine Reihe von Spalten enthält und das Array in ein Wörterbuch ablegen. Die erste Zeile wäre ein Schlüssel des Wörterbuchs, und der Rest der Zeilen wäre eine Liste (Schlüsselwerte). Ich habe folgendes versucht, aber ich habe viele Spalten, die variieren können.Lesen CSV-Datei als ein Wörterbuch mit der ersten Zeile als Kopfzeilen (Schlüssel)

reader = csv.reader(open('CSV/Logger_data.csv', 'r')) 
d = {} 
for key,value in reader: 
    d[key] = value 

DictReader scheint aber zu funktionieren, wenn ich durch Iterieren drucken, aber wie kann ich die Daten in einem Wörterbuch reader. Das ist, was ich bisher versucht:

with open ('CSV/Logger_data.csv') as csvfile: 
    reader = csv.DictReader(csvfile) 
    for row in reader: 
     print(row["DateTime"], row["Column1"]) 
+0

Nein, ich habe mir das angeschaut s Thread, dieser enthält die erste Spalte als Schlüssel. Aber ich habe die erste Zeile als Schlüssel – Curtis

Antwort

1
import csv 
from itertools import chain 

def get_mulList(*args): 
    return map(list,zip(*args)) 

csv_data = open('logger_data.csv','r') 
data = list(csv.reader(csv_data)) 
ind_dict = dict(zip(data[0],get_mulList(*data[1:])))  
print ind_dict 

wenn Ihre CSV so ist,

'DateTime' 'Column1' 
1-2-2012 a 
2-3-2013 b 
3-4-2014 c 

aus dem obigen Skript Ausgabe wie folgt erhalten wird,

{ 
    'DateTime':['1-2-2012','2-3-2013','3-4-2014'], 
    'Column1':['a','b','c'] 
} 
+0

Ja, ich kann diese Ausgabe bekommen, aber ich möchte '{'Column1': ['a', 'b', 'c'], 'DateTime': [1-2-2012, 2-3-2013, 3- 4-2014]} ' – Curtis

+0

Ich habe Änderungen basierend auf Ihren Bedürfnissen vorgenommen .. überprüfen Sie jetzt, es reduzieren Haufen von Schleifen. –

+0

Großartig, vielen Dank - genau ich wollte! – Curtis

0

Hier ein Beispiel:

import csv 

d={} 
with open("logger_data.csv","r") as csvf: 
    content = csv.reader(csvf, delimiter=";") 
    for row in content: 
     if not row[0] in d: 
      d[row[0]]=[] 
     for value in row[1:]: 
      d[row[0]].append(value); 

für die CSV-Datei "logger_data.csv" auf der Suche wie folgt aus:

ab; 123; 234; 345

CE; 1; 2; 3; 4

ll; 99; 12; 123; 4; 5

Ausgang:

{'ab': ['123', '234', '345'], 
'ce': ['1', '2', '3', '4'], 
'll': ['99', '12', '123', '4', '5']} 
+0

Danke, aber meine erste Reihe von CSV ist 'ab; ce; ll'. Aber du hast mich verstanden, was für ein Output ich habe! – Curtis

Verwandte Themen