Pular para o conteúdo

Como corrigir o KeyError no Python?

CodeMDD.io

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:

idades = {'João': 30, 'Maria': 28, 'José': 33}
idades['Antônio']

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:

idades = {'João': 30, 'Maria': 28, 'José': 33}
pessoa = input('Obter idade de: ')
print(f'{pessoa} tem {idades[pessoa]} anos de 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.