2011-05-26 83 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可以是任何索引的情況的可用列。