我需要创建一个将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]}
答案 0 :(得分:0)
尝试defaultdict
和dictreader
阅读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文件中没有空行。