我要做的是拿一个带有几行和一列数据的csv文件,然后创建一个我可以调用的有序字典,然后迭代。
这是我在python shell中打开并打印csv文件时的样子:
这是我现在拥有的代码,并且正在shell中玩:
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)
我希望它遍历每一行并编写字典,其中键是日期,值是每列中其他值的列表。
Ex:{“12/12/1980”:[28.75,28.87,28.75,28.75,2093900.0,0.0,1.0]}
答案 0 :(得分:2)
我不知道为什么你要从字典中删除pop
个键以及列表中的项目。它似乎无法满足您创建OrderedDict
的目的。
这是我来的解决方案。它不会弹出任何项目(再次,因为我不知道你为什么这么做)。
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)
如果将它放入函数中,这可能更清晰,更可重复使用,如下所示:
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')