如何修复 python 字典中的 KeyError?
我被要求创建一个字典并创建一个函数 number_dictionary(text, n)。如果 text 与 n 匹配,我可以返回 True 或 False,但有一个 KeyError 当我输入不在字典中的内容时应该返回 False。
我将这两个条件放在一起(当它不匹配且不在字典中时),但随后它返回的所有内容都是 False。
def number_dictionary(text,n):
numbers={'two': '2', 'three': '3', 'four': '4'}
if n != numbers[text] or n or text not in numbers:
return(False)
else:
return(True)
请您参考如下方法:
三个选项:
-
try: foo = somedictionary[bar] except KeyError: return False 使用
dict.get()method要返回一个默认值,该默认值默认为None:foo = somedictionary.get(bar) # return None if bar is not a key单独测试 key :
if bar not in somedictionary: return False
在您的情况下,您在尝试访问它之后测试了 key 。您可以交换测试(删除 或 n):
def number_dictionary(text, n):
numbers={'two': '2', 'three': '3', 'four': '4'}
return text not in numbers or n != numbers[text]
或者直接使用dict.get(),默认的None永远不会匹配字符串n:
def number_dictionary(text, n):
numbers = {'two': '2', 'three': '3', 'four': '4'}
return numbers.get(text) == n
not in 和 == 比较测试都已经产生了 True 或 False,所以有无需使用 if 和单独的 return 语句。
