迭代行

时间:2015-11-29 07:29:09

标签: python csv dictionary iteration row

我需要创建一个将csv文件作为输入并生成字典的函数。输入到函数中的csv文件可以具有不同数量的行和列。该功能应该能够弥补这一点。

可以使用的csv文件的示例是:

book.title,book.year,book.author

Godel Escher Bach, 1979, Douglas Hofstadter

What if?, 2014, Randall Munroe

Thing Explainer, 2015, Randall Munroe

Alan Turing: The Enigma, 2014, Andrew Hodges

我需要csv文件第一行中的每个项目都是字典中的一个键,然后让每个项目在该键下面的行放入一个值列表中。

所以给出的示例csv文件的输出将是:

my_dict = { 'book.title': [Godel Escher Bach, What if?, Thing Explainer, Alan Turing: The Enigma,], 'book.year': [1979, 2014, 2015, 2014], 'book.author': [Douglas Hofstadter, Randall Munroe, Randall Munroe, Andrew Hodges]}

1 个答案:

答案 0 :(得分:0)

尝试defaultdictdictreader阅读csv文件 -

import csv
from collections import  defaultdict
data = defaultdict(list)


with open(r"C:\bk.csv",'rb') as f:
    rd = csv.DictReader(f)
    for i in rd:
        for j in i.keys():
            data[j].append(i[j])
print {k:v for k,v in data.items()}

输出 -

{'book.year': ['1979', '2014', '2015', '2014'], 'book.title': ['Godel Escher Bach', 'What if?', 'Thing Explainer', 'Alan Turing: The Enigma'], 'book.author': [' Douglas Hofstadter', ' Randall Munroe', ' Randall Munroe', ' Andrew Hodges']}

N.B。我假设csv文件中没有空行。