csv到OrderedDict

时间:2011-05-26 18:09:47

标签: python

如何从csv制作OrderedDict?有什么功能吗?

CSV:

1 one
2 two

OrderedDict:

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

5 个答案:

答案 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,