如何创建多个词典并在Python中搜索它们

如何创建多个词典并在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()

我正在尝试使用字典编写一个程序,允许用户输入课程和章节号,然后返回有关课程的信息。例如,如果用户输入10851_01L,程序应返回:“课程为MIS113,教授位于OW206中” 这是我正在使用的以下代码。在运行该程序时,我得到了一个输入CRN_SEC编号的类的KeyError

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])
操作时会发生什么?似乎您正在将搜索键转换为一个值,并尝试使用该值而不是键访问讲师和位置。