因此,我分别为课程名称和学生ID创建了键、值对的字典。我希望能够遍历字典并打印包含特定值(学生ID)的所有键(课程名)。
那么,这里是变量的第一个初始化,然后要求用户输入学生ID。他们可以选择1001-1004。
def main():
c_roster = {'CSC101': ['1004', '1003'],
'CSC102': ['1001'],
'CSC103': ['1002'],
'CSC104': []}
id_ = input('What is the student ID? ')
list_courses(id_, c_roster)
在这里,我遍历字典视图并创建一个键列表,这些键的值与id_变量匹配,然后打印该列表。然而,无论我选择哪个学生号,它都会一直打印一个空列表。为什么会发生这种情况?
def list_courses(id_, c_roster):
print('Courses registered:')
c_list = [k for k, v in c_roster.items() if id_ == v]
print(c_list)
main()
列表推导式k, v in c_roster.items()
返回k, v
对,其中k
是课程名称,v
是该课程注册的学生id列表。
因此,您将IDid_
与学生ID列表进行比较,这永远不会为真。
你必须看看id_
是否在v
中,比如
c_list = [k for k, v in c_roster.items() if id_ in v]