打印字典键时意外输出None,如何排除该无效输出?
问题原因与解决方案
核心问题
你输出里的None根本不是字典里的键,而是因为你调用printMajors()函数时,错误地用print()包裹了它。
你的printMajors()函数没有定义返回值,Python里无返回值的函数默认返回None。如果你的调用代码是:
print(printMajors())
那么函数内部的print(key)会先打印所有专业,然后外层的print()会把函数返回的None也打印出来,就出现了你看到的最后一行None。
解决步骤
直接调用函数,不要用
print()包裹:printMajors()这样只会执行函数内部的打印逻辑,不会额外输出
None。如果需要函数返回专业列表再自行打印,可以修改函数:
def printMajors(): # 返回所有专业拼接成的字符串 return '\n'.join(majors.keys()) # 此时用print包裹是合理的 print(printMajors())
为什么之前的操作没用
你之前删除值为None的键、判断key is not None都是无效的——因为你的majors字典里从一开始就没有None键,那行None和字典本身完全无关。
内容的提问来源于stack exchange,提问作者Christian Bates
相关产品推荐
相关产品推荐

