【发布时间】:2017-01-26 03:09:26
【问题描述】:
我现在正在努力从 csv 文件中编写字典。
csv文件格式如下:
student, Test 1, Test 2, Test 3, Final Exam
A, 9, 19, 9, 22
B, 10, 16, 9, 26
C, 11, 17, 8, 27
D, 7, 14, 9, 18
E, 8, 20, 8, 23
weight, 0.15, 0.25, 0.2, 0.4
max_points 12 20 9 30
其中 2-6 行是学生的姓名,即他们在每次考试中的考试成绩。 最后两行分别代表每次测试的权重和每次测试的满分。
现在,我想从此列表中创建一个字典,如下所示:
{'Test 1': {'weight': '0.15', 'max_points': '12'},
'Test 2': {'weight': '0.25', 'max_points': '20'},
'Test 3': {'weight': '0.2', 'max_points': '9'},
'Final Exam': {'weight': '0.4', 'max_points': '30'}}
其中键是csv文件中第一行的变量,除了变量students;在每个嵌套字典中,键是 csv 文件中第一列和最后两行的名称:weight、max_points。相应的值分别只是它们行中的值。
我现在唯一想到的是:
reader = csv.DictReader(open('gradebook.csv'))
for row in reader:
key = row.pop('Student')
而且我不知道如何进行。非常感谢您的帮助!!!
【问题讨论】:
-
如图所示,您的文件不是 CSV 文件。 CSV 文件中的列以逗号分隔。
-
@DYZ 在技术上是正确的,但现在将所有分隔的文本文件称为 CSV 已成为惯例。不说是对是错,只是说普通话。
-
@e4c5 将数字称为“数字”已成为普遍做法。这不会使他们成为数字,是吗?回归基础永远不会有坏处。
-
@DYZ 很抱歉造成混乱。我只是省略了逗号,但你明白我的意思吗?
-
@dyz 注意在pandas中,像上面这样读取文件的函数名为read_csv
标签: python csv dictionary