【发布时间】:2020-01-11 23:57:48
【问题描述】:
我有一个 csv 文件,指示(按顺序)姓名、年级、跳过的课程名称、次数,我已将其解析为列表列表。
csvlist = [['name','grade','lesson','number'],
['Jade','8','English','1'],
['James','7','Maths','3']...]
我已经有一本字典,其中包含所有 8 年级学生的姓名作为键,跳过的课程总数和 gpa 作为子字典,
names_dic = {'Jade':{'skip':2,'gpa':8.34},
'Mark':{'skip':16,'gpa':5.67'},
...}
现在我想创建一个字典,它使用与names_dic 相同的键,并将它们链接到它们各自的跳过课程名称和次数。问题是,在 csv 中,一个人跳过同一节课不止一次,它被写成多行(数字不一定表示该特定课程跳过的总小时数)。
我尝试的是:
lesson = {}
keys = names_dic.keys()
subkeys = []
subvalues = []
number = 0
subkeys.append(crimes_list[1][2])
for i in crimes_list[1:]:
for key in mykeys:
sub_dic = {}
if i[0] in keys:
if i[2] not in subkeys:
subkeys.append(i[2])
number += int(i[3])
subvalues.append(valcount)
else:
number += int(i[3])
else:
pass
lesson[key] = sub_dic
lesson = dict(zip(keys, subvalues))
预期的输出是:
lesson = {'Jade':{'English':1,'Physics':1},
'Mark':{'French':3,'Biology':5,'English':2,'Geography':3,'PE':3}
..}
我不知道该怎么做。我已经做了好几天了,但不明白如何遍历 csv 并将正确的总和链接到正确的课程和名称。我确信有一些包可以很容易地做到这一点,但我是 python 新手,所以我很挣扎。
【问题讨论】:
-
您能否分享部分 .csv 文件并显示预期结果?
-
我无法显示csv,但它已被解析并按顺序显示信息。我现在正在编辑问题
-
@Raphael 我已经编辑过了
-
你能不能在你的 .csv 文件中加入以下语句:“问题是,在 csv 文件中,一个人跳过同一节课不止一次,它被写成多行(数字不'不一定表示该特定课程跳过的总小时数)。 ?
-
@Raphael 基本上在 csv 中,例如,如果马克跳过法语 3 次,我会得到一行说:马克 8 法语 1,另一行说:马克 8 法语 2。所以我需要做的是表明如果同一主题对同一个人重复多次,我需要将数字相加
标签: python list csv dictionary