Pitão

Python defaultdict

Python defaultdict

Python oferece muitas estruturas de dados integradas, como listas, tuplas e dicionários, para salvar e gerenciar dados com eficiência. Os dicionários fornecem uma maneira fácil de salvar dados como pares de valores-chave. Uma chave atua como um índice e é usada para recuperar dados. As chaves devem ser únicas e imutáveis ​​em todo o dicionário. As chaves são principalmente strings e inteiros, embora o valor de uma chave possa ser de qualquer tipo, como um inteiro, string, número de ponto flutuante ou número complexo. Enquanto isso, um dicionário pode conter uma coleção, como uma lista, tupla ou algum outro tipo de dicionário. Um dicionário em Python é criado usando um par de chaves, em que cada par de valores-chave é separado por uma vírgula.

E se você tentar acessar ou modificar uma chave específica em um dicionário que não existe? Bem, neste caso, o interpretador Python irá gerar o erro “KeyError” e encerrar a execução do programa.

Vejamos um exemplo do erro “KeyError”.

#criando um dicionário
my_dict = 1: "Hello", 2: "Welcome", 3: "LinuxHint"
#accessing uma chave que não existe
meu_dito [4]

Resultado

Para lidar com esse erro, Python fornece o tipo defaultdict, uma classe de dicionário que pode ser encontrada no módulo de coleções. Este artigo cobre o ditado padrão do Python em detalhes.

Explicação e exemplos de defaultdict

O texto padrão é a alternativa do dicionário Python. Ele retorna objetos do tipo dicionário. O defaultdict é uma subclasse de dict. No caso de uma chave ausente, em vez de gerar um erro “KeyError”, o valor padrão é fornecido para a chave inexistente. A sintaxe do defaultdict é a seguinte:

defaultdict (default_factory)

A função defaultdict leva o parâmetro default_factory como um argumento. A função default_factory retorna o valor padrão para o defaultdict definido. Se tentarmos acessar ou modificar uma chave que está faltando, a função default_factory retorna o valor padrão como resultado. Se a função default_factory estiver faltando, então o defaultdic irá gerar um erro “KeyError” se houver alguma chave faltando.

Primeiro, vamos implementar um defaultdic em nosso script Python para acessar as chaves existentes e ausentes.

#importar o texto padrão do módulo de coleção
das coleções importar defaultdict
# definindo uma função para retornar o valor padrão
def my_func ():
imprimir ("A chave não está definida")
#creating a defualtdict
#passando o my_func () como um argumento para defaultdict
my_dict = defaultdict (my_func)
# definindo as chaves e valores
my_dict [1] = "Olá"
my_dict [2] = "Bem-vindo"
my_dict [3] = "LinuxHint"
#acessando os valores usando chaves
imprimir (meu_dito [1])
imprimir (meu_dito [2])
imprimir (meu_dito [3])
#accessing the missing or not defined key
meu_dito [4]

Resultado

O [4] é a chave que falta. Portanto, em vez de gerar um erro “KeyError”, ele chama a função default_factory, que retorna o valor padrão.


Uma função lambda, conhecida como função anônima, também pode ser usada como o parâmetro default_factory.

Em seguida, vamos implementar uma função lambda e passá-la como um argumento para o defaultdict.

#importar o texto padrão do módulo de coleção
das coleções importar defaultdict
#creating a defualtdict
#passando a função Lamnda como um argumento para defaultdict
my_dict = defaultdict (lambda: "A chave não está definida")
# definindo as chaves e valores
my_dict [1] = "Olá"
my_dict [2] = "Bem-vindo"
my_dict [3] = "LinuxHint"
#acessando os valores usando chaves
imprimir (meu_dito [1])
imprimir (meu_dito [2])
imprimir (meu_dito [3])
#acessando a chave ausente ou não definida
imprimir (meu_dito [4])

O defaultdict chama default_factory para fornecer o valor padrão, mas a função __missing () __ fornece o valor padrão. A função __missing () __ é uma função embutida em Python que leva o parâmetro default_factory como argumento. Se o parâmetro default_factory não for definido, a função __missing () __ gerará o erro “KeyError”.

Aqui, usaremos a função __missing () __ em nosso script Python.

#importar o texto padrão do módulo de coleção
das coleções importar defaultdict
# definindo uma função para retornar o valor padrão
def my_func ():
print ("A chave não está definida")
#creating a defualtdict
#passando o my_func () como um argumento para defaultdict
my_dict = defaultdict (my_func)
# definindo as chaves e valores
my_dict [1] = "LinuxHint"
#acessando os valores usando chaves
imprimir (meu_dito [1])
#acessando a chave ausente ou não definida
meu_dito.__ faltando __ (2)

Resultado

As classes list e int também podem ser usadas como parâmetros default_factory com defaultdict.

Listar como parâmetro default_factory

O defaultdict é criado com os valores da lista quando a classe da lista recebe um parâmetro default_factory.

#importar o texto padrão do módulo de coleção
das coleções importar defaultdict
# definindo um defaultdict
# passando a classe da lista como default_factory
my_dict = defaultdict (lista)
para i no intervalo (7):
meu_dito [i].anexar (i)
#printing the values
imprimir (meu_dict)

Resultado

A saída mostra os valores na lista. Como você pode ver, um defaultdict que contém a chave e os valores foi criado.

Inteiros como parâmetro default_factory

Se passarmos a classe int como um parâmetro default_factory, então podemos criar um defaultdict que contém apenas inteiros. Vamos criar uma lista de inteiros e salvá-la no defaultdict.

#importar o texto padrão do módulo de coleção
das coleções importar defaultdict
# definindo um defaultdict
# passando a classe int como default_factory
my_dict = defaultdict (int)
#criando uma lista de inteiros
minha_lista = [1,2,3]
para i em minha_lista:
meu_dito [i] + = 1
#printing the values
imprimir (meu_dict)

Resultado

Na saída fornecida, os valores inteiros antes dos dois pontos (:) são chaves, enquanto os valores inteiros após os dois pontos são valores.

Conclusão

O dafualtdict é uma classe semelhante a um dicionário presente no módulo de coleções. Funciona como um dicionário Python, mas não gera um “KeyError” quando uma chave não é encontrada. Este artigo explica o dito padrão em detalhes com vários exemplos.

Tutorial OpenTTD
OpenTTD é um dos jogos de simulação de negócios mais populares que existem. Neste jogo, você precisa criar um maravilhoso negócio de transporte. No en...
SuperTuxKart para Linux
SuperTuxKart é um ótimo título projetado para trazer a você a experiência Mario Kart gratuitamente em seu sistema Linux. É bastante desafiador e diver...
Tutorial de Battle for Wesnoth
The Battle for Wesnoth é um dos jogos de estratégia de código aberto mais populares que você pode jogar no momento. Este jogo não está apenas em desen...