如何创建多个词典并在Python中搜索它们
我正在尝试使用字典编写一个程序,允许用户输入课程和章节号,然后返回有关课程的信息。例如,如果用户输入10851_01L,程序应返回:“课程为MIS113,教授位于OW206中” 这是我正在使用的以下代码。在运行该程序时,我得到了一个输入CRN_SEC编号的类的KeyError如何创建多个词典并在Python中搜索它们,python,python-3.x,dictionary,Python,Python 3.x,Dictionary,我正在尝试使用字典编写一个程序,允许用户输入课程和章节号,然后返回有关课程的信息。例如,如果用户输入10851_01L,程序应返回:“课程为MIS113,教授位于OW206中” 这是我正在使用的以下代码。在运行该程序时,我得到了一个输入CRN_SEC编号的类的KeyError def main(): course = create_course() instructor = create_instructor() location = create_location()
def main():
course = create_course()
instructor = create_instructor()
location = create_location()
search = input('Please enter a CRN and section Key, input must be formatted as CRN_SEC: ')
value = course[search]
print(instructor[value])
print(location[value])
def create_course():
return {'10193_01W':'MIS102', '10227_01W':'MIS103', '10850_01':'MIS113',
'10851_01L':'MIS113', '10511_01':'MIS118', '10512_01L':'MIS118', '11263_01W':'MIS145',
'10780_01W':'MIS206', '11015_01W':'MIS251', '10385_01':'MIS255', '10513_01W':'MIS273',
'10514_01L':'MIS273', '11479_01W':'MIS275', '11934_01W':'MIS285', '10325_01':'MIS311',
'10333_01W':'MIS311', '10596_01W':'MIS322', '11797_01W':'MIS341', '11480_01W':'MIS344',
'11129_01W':'MIS407', '11964_02W':'MIS407', '10809_01W':'MIS442', '10852_01':'MIS496'}
def create_instructor():
return {'10193_01W':'Huntley', '10227_01W':'Huntley', '10850_01':'Beaudry',
'10851_01L':'Beaudry', '10511_01':'MacDougal', '10512_01L':'MacDougal', '11263_01W':'Carrere',
'10780_01W':'Kirby', '11015_01W':'Coon', '10385_01':'Dickson', '10513_01W':'MacDougal',
'10514_01L':'MacDougal', '11479_01W':'Stewart', '11934_01W':'Dickson', '10325_01':'Coon',
'10333_01W':'Kirby', '10596_01W':'Kirby', '11797_01W':'Stewart', '11480_01W':'Dickson',
'11129_01W':'Stewart', '11964_02W':'Stewart', '10809_01W':'Dickson', '10852_01':'Dickson'}
def create_location():
return {'10193_01W':'Web', '10227_01W':'Web', '10850_01':'OW206', '10851_01L':'OW206',
'10511_01':'BH124', '10512_01L':'OW206', '11263_01W':'Web', '10780_01W':'Web',
'11015_01W':'Web', '10385_01':'OW223', '10513_01W':'OW112', '10514_01L':'OW112',
'11479_01W':'Web', '11934_01W':'Web', '10325_01':'OW216', '10333_01W':'Web',
'10596_01W':'Web', '11797_01W':'Web', '11480_01W':'Web', '11129_01W':'Web',
'11964_02W':'Web', '10809_01W':'Web', '10852_01':'OW123'}
main()
如错误所示,这是
键错误
。这意味着所提供的密钥在dict
实例中不可用
在下面的逻辑部分中,输入值在搜索(例如:10851_01L)
中捕获,然后在agnitor课程中查找dict;返回的值(例如:MIS113)
在讲师
dict中进一步查找。但是,讲师
dict在MIS113
下没有任何键。这是你们这边的一个逻辑错误,如果你们按照我想说的去做,就可以纠正
search = input('Please enter a CRN and section Key, input must be formatted as CRN_SEC: ')
value = course[search]
print(instructor[search])
你为什么把它放在三本不同的字典里?为什么不做一些像:
my_dict = {
"10193_01W": {
"course": "MIS102",
"instructor": "Huntley",
"location": "Web"
},
...
}
然后简化获取my_dict[“10193_01W”][“course”]
的过程,例如获取课程号只需执行print(讲师[search])
和print(位置[search])
操作时会发生什么?似乎您正在将搜索键转换为一个值,并尝试使用该值而不是键访问讲师和位置。