Skip to main content
 首页 » 编程设计

python之使用 python 字典处理 keyerror

2025年05月04日12findumars

如何修复 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) 

请您参考如下方法:

三个选项:

  • Catch the exception :

    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 语句。