Como corrigir o KeyError no Python?
Exceções de KeyError em Python e como lidar com elas
A exceção KeyError
em Python é uma exceção comum encontrada por iniciantes. Saber por que um KeyError
pode ser levantado e algumas soluções para evitá-lo de interromper seu programa são etapas essenciais para melhorar como programador Python.
Ao final deste tutorial, você saberá:
- O que um
KeyError
em Python geralmente significa - Onde mais você pode encontrar um
KeyError
na biblioteca padrão - Como lidar com um
KeyError
quando você o encontrar
Bônus Grátis: Clique aqui para obter nosso Python Cheat Sheet gratuito que mostra o básico do Python 3, como trabalhar com tipos de dados, dicionários, listas e funções Python.
O que um KeyError
em Python geralmente significa
Uma exceção KeyError
em Python é levantada quando você tenta acessar uma chave que não está presente em um dicionário (dict
).
A documentação oficial do Python diz que o KeyError
é levantado quando uma chave de mapeamento é acessada e não é encontrada no mapeamento. Um mapeamento é uma estrutura de dados que mapeia um conjunto de valores para outro. O mapeamento mais comum em Python é o dicionário.
O KeyError
em Python é um tipo de exceção LookupError
e indica que houve um problema ao recuperar a chave que você estava procurando. Quando você vê um KeyError
, o significado semântico é que a chave procurada não pôde ser encontrada.
No exemplo abaixo, você pode ver um dicionário (idades
) definido com as idades de três pessoas. Quando você tenta acessar uma chave que não está no dicionário, um KeyError
é levantado:
Aqui, ao tentar acessar a chave 'Antônio'
no dicionário idades
, um KeyError
é levantado. Na parte inferior do traceback, você obtém as informações relevantes:
- O fato de que um
KeyError
foi levantado - A chave que não pôde ser encontrada, que foi
'Antônio'
A penúltima linha informa em qual linha a exceção foi levantada. Essa informação é mais útil quando você executa código Python a partir de um arquivo.
Observação: Quando uma exceção é levantada em Python, ela é feita com um traceback. O traceback fornece todas as informações relevantes para que você possa determinar por que a exceção foi levantada e o que a causou.
No programa abaixo, você pode ver o dicionário idades
definido novamente. Dessa vez, você será solicitado a fornecer o nome da pessoa para recuperar a idade:
Este código irá pegar o nome que você fornecer no prompt e tentar recuperar a idade dessa pessoa. O que quer que você digite no prompt será utilizado como chave para buscar a idade no dicionário idades
. Se você fornecer um nome que não está presente no dicionário, será levantado um KeyError
.