我正在浏览字典,我真的不知道如何构建自己的字典。我在csv文件中有以下数据
fp = CpE, CSE 2315
CpE, CSE 2320
CpE, CSE 2441
CpE, CSE 3320
CpE, CSE 3442
CpE, EE 2440
CpE, MATH 1426
CS, CSE 2315
CS, CSE 2320
CS, CSE 3320
CS, CSE 4303
CS, CSE 4305
CS, CSE 4308
CS, MATH 1426
SE, CSE 2315
SE, CSE 2320
SE, CSE 3311
SE, CSE 3320
SE, CSE 4321
SE, CSE 4322
SE, CSE 4361
SE, MATH 1426
我想以下列格式将这些信息存储在字典中,以便每个学位都是自己的关键,然后是该学位的所有课程
{'Cpe' : ['CSE 2315', 'CSE 2320', 'CSE 2441'.........],
'CS' : ['CSE 2315', 'CSE 2320'....................],
这是我写的尝试去做但我遇到麻烦
majors = { }
for line in fp :
degree, course = line.strip().split(',') ##split the componets of each line
if degree in majors : # if degree is already in dictionary,add class
majors[degree] = {course}
else : #if degree is not in dictionary add degree and class
majors[degree] = {degree,course}
return majors
但是当我打印时我得到了
{'CS': set(['MATH 1426']), 'CpE': set(['MATH 1426']), 'SE': set(['MATH 1426'])}
帮助?
答案 0 :(得分:2)
majors[degree] = {course}
...
majors[degree] = {degree,course}
{...}
表示法你在这里使用的符号对应于python中的集合。因此,当您确实需要列表时,实际上是在创建一个集合。你可以用这个
majors = {}
for line in fp :
degree, course = line.strip().split(',')
majors.setdefault(degree, []).append(course)
return majors
您可以使用defaultdict
创建与此键相对应的列表
from collections import defaultdict
majors = defaultdict(list)
for line in fp :
degree, course = line.strip().split(',')
majors[degree].append(course)
return majors
defaultdict
是dict
的子类。所以你可以像dict
一样使用它。