Python Collections DefaultDict

Python Collections DefaultDict
Ao usar os dicionários de Python, tentar acessar ou atualizar as chaves que estão faltando no dicionário pode levantar erros. Sua execução de código será interrompida e um terror de key será levantado. O tipo DefaultDict é uma classe que se assemelha a uma classe do tipo dicionário e está disponível na biblioteca de "coleções" do Python para lidar e evitar esses tipos de situações. Teremos uma explicação completa do que é o padrão e como ele difere do dicionário Python padrão. Além disso, aprenderemos a gerenciar geralmente os erros ausentes no Python. Por fim, explicaremos como empregar o objeto DefaultDict e usá -lo para acumular, agrupar e contar os dados.

Como as chaves ausentes são tratadas nos dicionários de Python?

Os dados são armazenados como pares de valor-chave nos dicionários python, que são importantes estruturas de dados. Como cada chave nos dicionários corresponde a um valor, eles são conhecidos como matrizes associativas. Podemos recuperar diretamente o valor de uma chave de um dicionário python, fechando a chave entre colchetes. Vamos examinar como obter o valor de uma chave de um dicionário em Python:

E se tentarmos acessar a chave de um dicionário que não está presente ou não existe?

Como podemos ver, um KeyError é levantado quando tentamos acessar uma chave de dicionário que não existe. Se o erro não for resolvido, nosso programa travará. O Python oferece uma variedade de opções para evitar isso, mas usar o DefaultDict é a melhor solução para isso. Ele fornece um método claro e seguro de fornecer valores padrão especificados para qualquer chave que não exista sem a necessidade de criá -lo inicialmente.

O que é defaultDict em python?

Um módulo que fornece tipos especializados de contêineres é chamado de coleções e está disponível na biblioteca padrão do Python. O tipo DefaultDict é um deles; É uma classe do tipo de dicto que foi criado especialmente para ajudá -lo com as teclas ausentes. Python DefaultDict Type deriva do ditado:

O código dado demonstra que o tipo de defaultDict no Python é uma subclasse do dicto. Isso implica que possui muitas das mesmas características que a classe de dicionário, além de modificar e estender alguns de seus recursos.

A seguir, são apresentadas as modificações significativas na classe de dicionário:

  • Substituições de defaultDict __missing __ (). Impede o aumento de KeyError quando falta uma chave.
  • Uma variável de instância gravável chamada “.fábrica padrão ”é adicionada que deve ser fornecida durante a instanciação.

Em geral, o padrão oferece métodos para dar os dicionários com os valores padrão na ausência de uma chave. Qualquer chamável aceitável (como int, lista, etc.) ou nenhum pode ser passado para o “.default_factory ”Callable. Sempre que tentamos acessar ou alterar o valor correspondente a uma chave ausente, o DefaultDict chama automaticamente um chamável se for fornecido.

Uma introdução à classe DefaultDict em Python e como ela difere de um dicionário Python padrão são abordados nesta seção. Agora, usaremos esses objetos na seção a seguir para aprimorar suas habilidades para usar os dicionários e lidar com os dados ausentes.

Como podemos criar um defaultDict?

Esta seção ensina como usar o módulo de coleções do Python para criar um objeto DefaultDict. Podemos simplesmente importar o módulo porque este módulo está incluído na biblioteca padrão do Python. Vamos explorar como podemos criar um defaultDict:

Aqui, um defaultDict é criado com o nome "Deflito". Devemos fornecer um chamável válido para gerar o dicionário com sucesso. Esses chamáveis ​​fornecem métodos para produzir muitos tipos de objetos, incluindo números, listas, etc. Em vez de usar a função, devemos usar o chamável.

Ao criar o dicionário neste caso, passamos a lista para o “.Factory padrão ”. O desafio é então usado da mesma maneira que um dicionário padrão. Observe que o dicionário atribui o valor padrão que recebe de chamar a lista () quando você tenta acessar ou atualizar o valor que é mapeado para uma chave que não existe.

Não chame o default_factory usando parênteses no momento da inicialização, pois um objeto Callable válido Python deve ser passado.

Manuseando as teclas que faltavam usando o DefaultDict

Esta seção ensina como usar o defaultDict do Python para lidar com as teclas que faltam. Já sabemos que você deve especificar um tipo de valor padrão ao criar um novo padrão. Isso nos permite gerenciar os dados ausentes ao tentar acessar uma chave que não está presente ou não existe. Vamos dar uma olhada no seguinte:

A partir do exemplo dado, fica claro que somos bem -sucedidos em acessar uma chave que não existia e que um valor "0" é retornado.

Contando os itens da lista usando o DefaultDict

Contar efetivamente os itens/objetos em um iterável e devolver as contagens em um dicionário são dois aplicativos criativos para o objeto DefaultDict. Vejamos como podemos conseguir isso usando o dicionário padrão do Python antes de entrar em como fazê -lo com o objeto DefaultDict.

A instrução if-else é usada no código fornecido para explicar a possibilidade de que a chave esteja faltando no nosso dicionário.

Usando o DefaultDict, podemos simplificar isso. Mesmo que nossas chaves não existissem anteriormente, podemos incrementá -las com segurança e criar um número inteiro como a chave padrão.

Aqui, criamos um objeto DefaultDict criando um chamável e passando um valor inteiro para ele. Como resultado, o valor recebe um valor de 0 se uma chave estiver faltando. Por causa disso, podemos aumentar com segurança o valor de uma chave em 1 quando encontramos um que não existe.

Agrupando os dados com defaultDict

O objeto DefaultDict pode ser usado para agrupar os dados de acordo com outras estruturas de dados. Com isso, iteramos sobre os objetos (como uma lista que contém tuplas, uma coleção de listas ou outro dicionário) para agrupar os dados.

Vejamos um exemplo. Poderíamos fazer um dicionário com nossos cursos como chaves e os nomes dos alunos matriculados em cada curso como uma lista se tivermos um dicionário de nomes dos alunos e os cursos que eles estão estudando.

Vejamos como fazer isso usando um dicionário Python padrão primeiro. Em seguida, implementamos isso usando o DefaultDict.

Isso é um pouco complicado, como podemos ver. Felizmente, o padrão simplifica substancialmente isso. Podemos eliminar a instrução if-else definindo um valor padrão como uma lista vazia.

Podemos observar o quão mais simples é compreender este exemplo, porque não precisamos nos preocupar com o manuseio de erros. Quando falta uma chave, nosso padrão sempre cria uma lista vazia. Como resultado, adicionar o valor da chave é simples e não precisamos nos preocupar em aumentar os keyerrors.

Acumulando os dados usando o DefaultDict

Agora acumulamos os dados usando o Python's DefaultDict. Há casos em que você precisa determinar a soma total dos valores/dados em uma coleção ou sequência. Suponha que você tenha os dados sobre itens que foram vendidos em uma loja. Vamos primeiro armazenar os dados como uma lista de objetos de tupla:

Podemos determinar o total de vendas para cada produto usando esses dados. Podemos conseguir que o uso do defaultDict com o float definido como a "fábrica padrão".

Para iterar sobre os itens, construímos um loop para. As vendas por item de dicionário são calculadas usando um operador de atribuição aumentado (+=). O segundo loop imprime as vendas após itetar os itens de desafio.

Conclusão

As informações necessárias sobre o objeto DefaultDict no Python e como você pode usá -lo foram cobertas neste tutorial. Você aprendeu sobre o comportamento dos dicionários python quando as chaves estão faltando. Em seguida, você aprendeu a especificar os valores padrão usando o Python defaultDict. Discutimos como as chaves que falta. Aprendemos que o objeto DefaultDict pode ser usado para agregar, acumular e contar dados.