【发布时间】:2015-11-21 10:25:49
【问题描述】:
我想为另一个字典中的字典分配一个列表,但我得到一个键错误 你可以在这里找到文件 https://www.dropbox.com/s/9n35b41rzuxjkk8/plan1.txt?dl=0
Code, Title, Lec, Lab, Cr, Prereq, Year, Semester
ARAB110 , Arabic Language Skills I , 3 , 0 , 3, - , 1 , 1
CHEMY101 , General Chemistry I , 3 , 3 , 4, - , 2 , 2
ENGL154 , Language Development I , 3 , 0 , 3, - , 1 , 1
ENGL155 , Language Development II , 3 , 0 , 3, ENGL154 , 1 , 2
ENGL219 , Technical Report Writing , 3 , 0 , 3, ENGL155 , 2 , 1
我想为每年创建一个字典,并且在每年的内部每个学期的字典都包含本学期所有代码的列表
curri = read_csv('senior_data/plan1.txt')
curri = curri.sort([' Year',' Semester '],ascending=[1,1])
cur = {}
cur['1']={}
cur['2']={}
cur['3']={}
cur['4']={}
cur['1']['1'] = {}
cur['1']['2'] = {}
cur['2']['1'] = {}
cur['2']['2'] = {}
cur['3']['1'] = {}
cur['3']['2'] = {}
cur['3']['3'] = {}
cur['4']['1'] = {}
cur['4']['2'] = {}
i=0
c_list = []
for xxx in cur:
for y in cur[xxx]:
print (xxx+" "+y)
for row in curri.iterrows():
if(str(curri[' Year'][i]) == xxx and str(curri[' Semester '][i] == y)):
print (xxx+":"+y+ curri['Code'][i])
c_list.append(curri['Code'][i])
i=i+1
cur[xxx][y] = c_list
c_list = []
当我删除第三个循环时,它工作正常!
这是输出:
1 1
1:1 ARAB110
1:1 ENGL154
1:1 ENGL155
1:1 ISLM101
1:1 ITCS101
1:1 ITCS102
1:1 MATHS101
1:1 MATHS102
1:1 PHYCS101
1:1 PHYCS102
1 2
错误是
KeyError: 42L
---> 24 if(str(curri[' Year'][i]) == xxx and str(curri[' Semester ']
【问题讨论】:
-
element in seqence给你的是元素,而不是索引,你知道吗?使用调试器或输出值以找出与预期不符的确切位置。另外,请引用完整的错误信息,不要在标题中添加标签,它们应该保持独立。 -
请粘贴您收到的错误回溯,因为您的代码不完整,我们无法运行它。
-
我只能获取第一个xxx和第一个y的元素
-
1 1 1:1 ARAB110 1:1 ENGL154 1:1 ENGL155 1:1 ISLM101 1:1 ITCS101 1:1 ITCS102 1:1 MATHS101 1:1 MATHS102 1:1 PHYCS101 1:1 PHYCS102 1 2
-
您的代码 sn-p 给出此错误消息:
NameError: name 'curri' is not defined。请粘贴导致错误的完整代码。
标签: python dictionary keyerror