您如何处理代码中的不同 KeyError

How do you handle different KeyError in your code

假设我的字典可以有 3 个不同的键值对。我如何使用 if 条件处理不同的 KeyError。

假设。

Dict1 = {'Key1' : 'Value1, 'Key2': 'Value2', 'Key3': 'Value3' }

现在如果我尝试 Dict1['Key4'],它会通过我 KeyError: 'Key4',

我要处理

except KeyError as error:
     if str(error) == 'Key4':
        print (Dict1['Key3']
     elif str(error) == 'Key5':
        print (Dict1['Key2']
     else:
        print (error)

它没有在 if 条件下被捕获,它仍然进入 else 块。

Python KeyErrors 比仅使用的密钥要长得多。您必须检查 "Key4" 是否 错误中,而不是检查它是否 等于 错误:

except KeyError as error:
     if 'Key4' in str(error):
        print (Dict1['Key3'])
     elif 'Key5' in str(error):
        print (Dict1['Key2'])
     else:
        print (error)

你也可以使用一个简单的方法:

dict1 = {'Key1' : 'Value1', 'Key2': 'Value2', 'Key3': 'Value3' }

key4 = dict1['Key4'] if 'Key4' in dict1 else dict1['Key3']
key5 = dict1['Key5'] if 'Key5' in dict1 else dict1['Key2']

如果密钥不存在,您也可以只使用 dict.get() 为您提供默认值:

dict1 = {'Key1' : 'Value1', 'Key2': 'Value2', 'Key3': 'Value3' }

print(dict1.get('Key4', dict1.get('Key3')))
# Value3

print(dict1.get('Key4', dict1.get('Key2')))
# Value2

来自docs

Return the value for key if key is in the dictionary, else default. If default is not given, it defaults to None, so that this method never raises a KeyError