如何从 Python 中的 KeyError 中获取丢失的密钥?

How to I get the missing key from a KeyError in Python?

我正在编写一个辅助函数,因为我需要知道在引发 KeyError 时缺少什么键。

考虑一下:

def foo(x:dict):
  
   try:
      y = x['A']
   except KeyError as ke:
      return ke

foo(dict())

正如预期的那样,上面的代码引发了 KeyError。更具体地说,repr 是 KeyError('A').

我想访问缺少的“A”,但它似乎不是 KeyError 对象的属性。

有什么想法吗?

Ps。我这样做的原因是因为我想写一个

形式的函数
def check_calculation_dependency_on_data(calculation:callable, data:pd.DataFrame)->list[str]:
   '''Returns the mandatory columns data needs to contain for the calculation to work'''

我有一个上面的版本,其中数据从所有列开始,并一次逐步删除它们(在 try-except 块内)以列出如果丢失会引发 KeyError 的列。但是,如果代码以空数据帧开头,并且我一一添加缺少的列,直到没有引发 KeyError,代码会更有效率。

这里已经回答了 Link

map1 = {}
try:
    x = map1['key2']
except KeyError as e:    
    print(e.args[0])