您如何处理代码中的不同 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
假设我的字典可以有 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