我有一个CSV文件,文件顶部是数据列的标题:
a,b,c
1,2,3
4,5,6
7,8,9
我需要将其读入一个字典的列表中:
desired_result = {'a': [1, 4, 7], 'b': [2, 5, 8], 'c': [3, 6, 9]}
使用DictReader
读取时,我使用嵌套循环将项目添加到列表中:
f = 'path_to_some_csv_file.csv'
dr = csv.DictReader(open(f))
dict_of_lists = dr.next()
for k in dict_of_lists.keys():
dict_of_lists[k] = [dict_of_lists[k]]
for line in dr:
for k in dict_of_lists.keys():
dict_of_lists[k].append(line[k])
第一个循环将字典中的所有值设置为空列表。下一个循环遍历从CSV文件中读取的每一行,DictReader
从中创建键值对字典。内部循环将值附加到与相应键匹配的列表中,因此我最终得到所需的字典列表。我经常不得不写这个。我的问题是,是否有一种更pythonic的方式可以使用内置函数完成此操作,而无需嵌套循环,或者使用更好的惯用语,或者以替代方式存储此数据结构,以便通过查询关键字返回可索引的列表?如果有,是否还有一种方法来预先格式化列被摄入的数据?
for k in dict_of_lists.keys():
翻译为for k in dict_of_lists:
- Cristian Ciupitu