如何从csv制作OrderedDict?有什么功能吗?
CSV:
1 one
2 two
OrderedDict:
OrderedDict((('1', 'one'), ('2', 'two')))
答案 0 :(得分:8)
如果您的csv有两列,如问题中所述,您可以这样做:
import csv
import collections
with open('foo.csv','rb') as f:
r = csv.reader(f)
od = collections.OrderedDict(r)
如果csv文件中的行格式为key, value1, value2, value3
,您可以这样做:
with open('foo.csv','rb') as f:
r = csv.reader(f)
od = collections.OrderedDict((row[0], row[1:]) for row in r)
答案 1 :(得分:1)
我有同样的问题,简单的方法是子类化和调整csv函数。这是我的工作代码:http://code.activestate.com/recipes/577996-ordered-csv-read-write-with-colum-based-lookup/?in=user-4177968
答案 2 :(得分:0)
有一个包含读卡器的csv模块。通常,您可以将元组列表转换为字典,如下所示:
d = OrderedDict((k, v) for k, v in listOfTuples)
答案 3 :(得分:0)
虽然该解决方案已被接受,但我的替代解决方案适合密钥可以位于任何列的情况::
>>> import pyexcel as pe
>>> csv = pe.Sheet("your.csv", name_rows_by_column=0)
>>> your_dict = csv.to_dict() # Voila, OrderredDict in return!
其中name_rows_by_column可以是可用列的任何索引。
答案 4 :(得分:0)
在Python 3中,CSV模块可以导入CSV文件并将行直接转换为homestead up --provision
的实例,其键顺序与CSV文件一致。这与Python 2的行为有所不同,在Python 2的行为中,行以纯字典类型返回。
OrderedDict
import csv
from pprint import pprint
with open(filename) as fd:
for row in csv.DictReader(fd):
pprint(row)
Date,Name,Notes
31 May 2019,Robert,
1 June 2019,Silvio,