2016-04-11 23 views
1

Yapmaya çalıştığım şey, birkaç satır ve veri sütunu içeren bir csv dosyası alıp, daha sonra arayabileceğimiz ve yineleyebileceğim sıralı bir sözlük hazırlamasıdır.Bir csv dosyasından OrderedDict oluşturma

"csv printed"

Ve burada şimdi sahip ve kabuk ile oynuyorum kodudur:

Bu

ben aç ve piton kabuğunda csv dosyasını yazdırırken neye benzediği

from collections import OrderedDict 

aDict = OrderedDict() 
order = next(csv.reader(file))[1:] 
file.seek(0) 
csvReader = csv.DictReader(file) 
for row in csvReader: 
    key = row.pop("key") 
    aDict[key] = OrderedDict((k, row[k]) for k in order) 

"my unworking code"

Ben her hattı üzerinden yineleme ve anahtarlar tarihleri ​​olmak sözlüğü yazmak istiyorum ve her sütundaki diğer değerlerin bir listesi olarak değerleri.

Ör: { "1980/12/12": [28.75,28.87,28.75,28.75,2093900.0,0.0,1.0]} Eğer kapalı pop anahtarlarına çalışıyoruz neden

+0

İnsanların kopyalamak böylece senin soru düz metin olarak kod eklemek öneririm ve onu çalıştırabilecekleri şekilde düzeltip düzeltmeye çalışın. – eestrada

cevap

2

Bilmiyorum listeden sözlük ve öğeler. OrderedDict'u oluşturma amacınıza hizmet ediyor gibi görünmüyor.

Bu, geldiğim çözüm. Herhangi bir eşyayı açmaz (tekrar neden bunu yaptığınızı bilmediğim için).

import csv 
from collections import OrderedDict 

file = open('example.csv', mode='r') 

csvReader = csv.reader(file) 

# get rid of header row 
header = next(csvReader) 
# print(header) 

odict = OrderedDict() 
for row in csvReader: 
    odict[row[0]] = row[1:] 
    # print(row) 

print(odict) 

bu bir işleve koymak şöyle, bu daha temiz ve daha yeniden kullanılabilir olabilir:

import csv 
from collections import OrderedDict 

def parse_csv(filename): 

    file = open(filename, mode='r') 

    csvReader = csv.reader(file) 

    # get rid of header row 
    header = next(csvReader) 
    # print(header) 

    odict = OrderedDict() 
    for row in csvReader: 
     odict[row[0]] = row[1:] 
     # print(row) 

    return odict 

parse_csv('example.csv') 
İlgili konular