Python dict para pesquisas rápidas e padrões de teclas
Um ditado Python mapeia chaves hash para valores para pesquisa rápida por chave.
Use-o quando cada item tiver um identificador exclusivo e você precisar de acesso rápido por essa chave.
O dict.get permite fornecer um padrão para chaves ausentes para manter as pesquisas seguras.
Isso torna os dictos um ajuste perfeito para tarefas de pesquisa baseadas em chave.
Exemplo de Python Dict para pesquisa de chave
Saída:
A saída aparecerá aqui...
Saída:
user_2: Noah
user_3: unknown
Como este exemplo funciona
- O literal dict cria um mapeamento de IDs de usuários para nomes; as chaves dict devem ser hasháveis, portanto, as strings são uma escolha segura.
name_by_id["user_2"]retorna o valor de uma chave existente, mas este formulário geraKeyErrorquando a chave está faltando.getretorna o padrão fornecido quando a chave está ausente, o que evita a exceção para chaves opcionais.
Erros Comuns
Erro: usar d[key] quando a chave é opcional.
Errado:
status = status_by_order[order_id]
Certo:
status = status_by_order.get(order_id, "not found")
Por que isso acontece: d[key] aumenta KeyError para chaves ausentes, enquanto get retorna um padrão quando a chave está ausente.
Erro: usar uma chave não lavável como uma lista.
Errado:
bad_key = ["A101"]
status_by_order[bad_key] = "shipped"
Certo:
good_key = ("A101",)
status_by_order[good_key] = "shipped"
Por que isso acontece: as chaves de dict devem ser hasháveis, e as listas não; tuplas funcionam porque são hashable quando seu conteúdo é hashable.
Erro: presumir que 1, 1.0 e True são chaves distintas.
Errado:
d = {1: "one", True: "bool"}
Certo:
d = {1: "one", 2: "two"}
Por que isso acontece: chaves que comparam índices iguais à mesma entrada do dicionário, portanto, atribuições posteriores sobrescrevem as anteriores.
Python dict vs list: qual usar
| Use dict quando… | Usar lista quando… |
|---|---|
| Você precisa mapear uma chave para um valor e procurá-la por essa chave. | Você só precisa de uma sequência ordenada de itens ou acesso posicional. |
| As chaves são identificadores estáveis, como IDs, códigos ou nomes. | A posição de cada item é a principal forma de acessá-lo. |
Regra prática: use um ditado para pesquisa baseada em chave e uma lista para acesso ordenado baseado em índice.
Considerações de desempenho
A implementação de dict do Python é bem ajustada e funciona muito bem como um mapeamento de uso geral, e é por isso que é a escolha padrão para pesquisas repetidas de chaves.
Se você precisar apenas de acesso ordenado e baseado em índice, uma lista poderá ser mais simples porque os dicionários são indexados por chaves em vez de posições.
Ao iterar sobre objetos de visualização dict, evite adicionar ou excluir entradas durante o loop; a mutação durante a iteração pode aumentar RuntimeError, portanto, copie as chaves primeiro quando precisar alterá-las.
Mais exemplos
Mesclar padrões com substituições (Python 3.9+):
defaults = {"retries": 2, "timeout": 5}
overrides = {"timeout": 10}
config = defaults | overrides
print(config)
| cria um novo dict e, quando as chaves se sobrepõem, o dict da direita vence, o que é útil para configurações em camadas.
Crie um ditado a partir de pares chave/valor:
language_labels = [("en", "Hello"), ("es", "Hola")]
labels_by_locale = dict(language_labels)
print(labels_by_locale)
dict() aceita um iterável de pares chave/valor, o que é útil quando seus dados chegam como tuplas.
Quando usar o ditado Python
- Você precisa buscar ou atualizar valores por uma chave estável, como IDs, códigos ou nomes.
- Você deseja uma ordem de iteração previsível que corresponda ao pedido de inserção.
- Você precisa de padrões seguros para chaves perdidas com
getou verificações explícitas de chaves. - Você precisa combinar dicionários com regras de precedência claras.
- Não use um dict se precisar apenas de acesso posicional aos itens solicitados; uma lista é mais simples para esse caso.