使用python字典处理keyerror

时间:2015-09-14 08:56:40

标签: python dictionary

如何在python字典中修复KeyError

我被要求创建一个字典并创建一个函数number_dictionary(text, n)。如果TrueFalse匹配,我可以返回textn,但当我放置字典中没有的内容时,我会返回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)

1 个答案:

答案 0 :(得分:8)

三个选项:

  • 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
    
  • 单独测试密钥:

    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==比较测试已生成TrueFalse,因此无需使用if并将{{1}分开语句。