如何KeyError在python字典中修复?
我被要求创建一个字典并创建一个函数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)
Run Code Online (Sandbox Code Playgroud)
三种选择:
抓住例外:
try:
foo = somedictionary[bar]
except KeyError:
return False
Run Code Online (Sandbox Code Playgroud)使用该dict.get()方法返回默认值,默认值默认为None:
foo = somedictionary.get(bar) # return None if bar is not a key
Run Code Online (Sandbox Code Playgroud)单独测试密钥:
if bar not in somedictionary:
return False
Run Code Online (Sandbox Code Playgroud)在您的情况下,您尝试访问密钥后测试了密钥.你可以交换测试(丢弃or n):
def number_dictionary(text, n):
numbers={'two': '2', 'three': '3', 'four': '4'}
return text not in numbers or n != numbers[text]
Run Code Online (Sandbox Code Playgroud)
或者只是使用dict.get(),默认情况下None永远不会匹配字符串n:
def number_dictionary(text, n):
numbers = {'two': '2', 'three': '3', 'four': '4'}
return numbers.get(text) == n
Run Code Online (Sandbox Code Playgroud)
无论是not in和==对比试验已经产生或者True还是False,所以没有必要使用if独立的return语句.