如何在python字典中修复KeyError
?
我被要求创建一个字典并创建一个函数number_dictionary(text, n)
。如果True
与False
匹配,我可以返回text
或n
,但当我放置字典中没有的内容时,我会返回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)
答案 0 :(得分:8)
三个选项:
try:
foo = somedictionary[bar]
except KeyError:
return False
使用dict.get()
method代替默认值,默认值默认为None
:
foo = somedictionary.get(bar) # return None if bar is not a key
单独测试密钥:
if bar not in somedictionary:
return False
在您的情况下,您在尝试访问后测试了键。您可以交换测试(删除or 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
并将{{1}分开语句。