从 csv 文件创建 OrderedDict
Creating an OrderedDict from a csv file
我想做的是获取一个包含多行和多列数据的 csv 文件,并制作一个有序的字典,我可以在以后调用和迭代。
这是我打开并打印 python 中的 csv 文件时的样子 shell:
这是我现在拥有的代码,正在 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)
我希望它遍历每一行并编写字典,键是日期,值是每列中其他值的列表。
例如:{“12/12/1980”:[28.75,28.87,28.75,28.75,2093900.0,0.0,1.0]}
我不知道您为什么要 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')
我想做的是获取一个包含多行和多列数据的 csv 文件,并制作一个有序的字典,我可以在以后调用和迭代。
这是我打开并打印 python 中的 csv 文件时的样子 shell:
这是我现在拥有的代码,正在 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)
我希望它遍历每一行并编写字典,键是日期,值是每列中其他值的列表。
例如:{“12/12/1980”:[28.75,28.87,28.75,28.75,2093900.0,0.0,1.0]}
我不知道您为什么要 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')