如何根据字典值打印对应键?代码输出空列表问题排查
问题原因及解决方案
你的代码核心问题出在list_courses函数的列表推导式判断条件上:
c_list = [k for k, v in c_roster.items() if id_ == v]
这里的v是对应课程的学生ID列表(比如CSC102对应的['1001']),而id_是你输入的字符串(比如'1001')。你拿字符串和列表做相等比较,这两个类型完全不同,永远不可能相等,所以筛选结果必然是空列表。
修正方法
把判断条件改成id_ in v,这样就能检查输入的学生ID是否存在于当前课程的学生列表中:
def list_courses(id_, c_roster): print('Courses registered:') c_list = [k for k, v in c_roster.items() if id_ in v] print(c_list)
测试示例
- 输入
1001,输出:['CSC102'] - 输入
1003,输出:['CSC101'] - 输入
1002,输出:['CSC103'] - 输入
1004,输出:['CSC101']
内容的提问来源于stack exchange,提问作者Code_monkey
相关产品推荐
相关产品推荐

