2011-05-26 89 views
1

如何从csv制作OrderedDict?有没有功能?csv to OrderedDict

CSV:

1 one 
2 two 

OrderedDict:

OrderedDict((('1', 'one'), ('2', 'two'))) 
+1

阅读标准库中的[csv模块](http://docs.python.org/library/csv.html),并按照其中的示例进行操作。 – 2011-05-26 18:15:49

回答

7

如果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) 
0

有一个CSV模块,包括一个读卡器。在一般情况下,你可以把一个元组列表到字典中,像这样:在你的问题中所述

d = OrderedDict((k, v) for k, v in listOfTuples) 
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可以是任何索引的情况的可用列。