CSV в OrderedDict

1

Как я могу сделать OrderedDict из csv? Есть ли какая-нибудь функция?

CSV:

1 one
2 two

OrderedDict:

OrderedDict((('1', 'one'), ('2', 'two')))
  • 1
    Прочитайте о модуле csv из стандартной библиотеки и следуйте приведенным там примерам.
Теги:

4 ответа

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)
1

У меня была такая же проблема, простой способ заключался в подклассе и настройке функции csv. Вот мой рабочий бит кода: http://code.activestate.com/recipes/577996-ordered-csv-read-write-with-colum-based-lookup/?in=user-4177968

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 может быть любым индексом доступных столбцов.

0

Там есть модуль csv, который включает в себя считыватель. В общем, вы можете повернуть список кортежей в словарь следующим образом:

d = OrderedDict((k, v) for k, v in listOfTuples)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню