Como verificar se existe uma chave em um dicionário Python

Aprenda como verificar se existe uma chave em um dicionário Python. Compare o operador in, o método get(), setdefault e o tratamento de exceções KeyError.

Experimente esta solução no Editor

Visão geral

Ao interagir com dicionários preenchidos dinamicamente, como análise de parâmetros de usuário, substituições de configuração, registros de API ou cargas JSON, tentar recuperar um valor usando uma chave que não existe gerará um `KeyError` e travará seu aplicativo. Portanto, a implementação de verificações defensivas é essencial.

A maneira mais direta, pitônica e rápida de verificar se existe uma chave é usar o operador de associação `in`: `if key in my_dict:`. Esta expressão retorna `True` se a chave for encontrada e `False` caso contrário. Nos bastidores, os dicionários Python são implementados usando tabelas hash, tornando as verificações de associação altamente otimizadas, executando em complexidade de tempo médio O(1).

Alternativamente, se você deseja recuperar o valor de uma chave, mas retornar a um valor padrão se a chave estiver faltando, você pode usar o método `.get(key, default)`. Se a chave existir, ela retornará o valor; caso contrário, ele retorna seu valor padrão (ou `None` se omitido) sem gerar um `KeyError` ou exigir instruções condicionais.

Saída de código e execução

Este script demonstra a verificação da existência da chave usando o operador in, métodos substitutos get() e o tratamento de exceções KeyError.

check_dict_keys.py
Experimente no Editor
user = {"id": 101, "name": "Alice", "role": "admin"}

# 1. Checking key existence using the 'in' operator (Recommended)
if "role" in user:
    print("Found 'role' key. Value is:", user["role"])

if "email" not in user:
    print("'email' key is missing.")

# 2. Retrieving value safely using get() with a fallback
email_address = user.get("email", "no-email@example.com")
print("Email address:", email_address)

# 3. Handling KeyError exception manually
try:
    invalid_lookup = user["location"]
except KeyError:
    print("Caught KeyError: 'location' key does not exist.")
Saída terminal
Found 'role' key. Value is: admin
'email' key is missing.
Email address: no-email@example.com
Caught KeyError: 'location' key does not exist.

Implementação passo a passo

  • Use o operador in (por exemplo, if key in Dictionary:) para verificações de existência de chave padrão.
  • Use o operador not in para verificar se uma chave está faltando em uma estrutura de dicionário.
  • Chame Dictionary.get(key, default_value) para recuperar um valor com segurança e, ao mesmo tempo, fornecer um substituto padrão.
  • Envolva pesquisas diretas em blocos try-except KeyError ao lidar com chaves ausentes em integrações de terceiros.

Perguntas frequentes

Qual é a complexidade de tempo para verificar se existe uma chave em um dicionário?

É uma complexidade de tempo média O(1) porque os dicionários usam tabelas hash nos bastidores, tornando o tempo de pesquisa constante, independentemente do tamanho.

Posso verificar se existe um valor em um dicionário?

Sim, mas você deve pesquisar a visualização de valores: if value in my_dict.values():. Observe que as verificações de valor levam tempo linear O(N) porque o Python deve percorrer todos os elementos do dicionário.

Tópicos Relacionados

Recursos Python recomendados

Expanda seu conhecimento com tutoriais interativos relacionados, folhas de dicas e comparações de código.