我正在尝试读取逗号分隔文件并将其转换为字典,以便以下列格式结束
{'CpE' : CSE 2315,'CpE' : 'CSE 2320'. 'CpE' : 'CSE 2441'..........,'CS' : CSE 2315, 'CS' : CSE 2320}
所以我想做的就是将每一行存储在一个字典中,其中度是关键,而类是值
正在读取的文件是
CpE,CSE 2315
CpE,CSE 2320
CpE,CSE 2441
CpE,CSE 3320
CpE,CSE 3442
CpE,EE 2440
CpE,MATH 1426
CS,SE 2315
CS,CSE 2320
CS,CSE 3320
CS,CSE 4303
CS,CSE 4305
CS,CSE 4308
CS,MATH 1426
我写的代码是为了尝试这样做... fp是文件
majors = {}
for line in fp :
(degree, course) = line.strip().split(',')
majors[degree] = course
print majors
我得到的是
{'CS': 'MATH 1426', 'CpE': 'MATH 1426'}
它似乎只抓住每个学位/关键的最后一个值。为什么呢?
答案 0 :(得分:2)
这是因为您将其分配给相同的密钥。您需要为字典中的每个值使用唯一键。
答案 1 :(得分:2)
字典仅将单个值映射到每个键。你应该在这里做的是将列表课程映射到每个键。
答案 2 :(得分:1)
键只能映射到字典中的一个值。因此,您不断覆盖每个专业的单一课程。
如果您想创建一个将每个学位映射到list
课程的字典,您可以使用集合defaultdict
轻松完成此操作:
>>> from collections import defaultdict
>>> majors = defaultdict(list)
>>> fp = open("file.txt")
>>> for line in fp:
... (degree, course) = line.strip().split(',')
... majors[degree].append( course )
...
>>> majors
defaultdict(<type 'list'>, {'CS': ['SE 2315', 'CSE 2320', 'CSE 3320', 'CSE 4303',
'CSE 4305', 'CSE 4308', 'MATH 1426'],
'CpE': ['CSE 2315', 'CSE 2320', 'CSE 2441', 'CSE 3320',
'CSE 3442', 'EE 2440', 'MATH 1426']
})