Python DefaultDict

Python DefaultDict

O Python oferece muitas estruturas de dados internas, 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 valor-chave. Um chave atua como um índice e é usado para recuperar dados. As chaves devem ser únicas e imutáveis ​​em todo o dicionário. As chaves são principalmente cordas e números inteiros, embora o valor de uma chave possa ser de qualquer tipo, como um número 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 colchetes encaracolados, no qual 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 intérprete Python aumentará o erro "KeyError" e encerrará a execução do programa.

Vejamos um exemplo do erro "KeyError".

#Criar um dicionário
my_dict = 1: "Hello", 2: "Welcome", 3: "Linuxhint"
#acessar uma chave que não existe
my_dict [4]

Saída

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

Explicação e exemplos de DefaultDict

O DefaultDict é a alternativa do Dicionário Python. Retorna objetos do tipo dicionário. O DefaultDict é uma subclasse do dicto. No caso de uma chave ausente, em vez de aumentar um erro de "KeyError", o valor padrão é fornecido para a chave inexistente. A sintaxe do DefaultDict é a seguinte:

defaultDict (default_factory)

A função DefaultDict toma 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 ausente, o DefaultDic aumentará um erro "KeyError" se houver alguma chaves ausentes.

Primeiro, implementaremos um DefaultDic em nosso script Python para acessar as teclas existentes e ausentes.

#import o defaultDict do módulo de coleção
De coleções importantes defaultDict
#Defining uma função para retornar o valor padrão
def my_func ():
print ("A chave não está definida")
#Criar um DefualtDict
#passing o my_func () como um argumento para o defaultDict
my_dict = defaultDict (my_func)
#Definindo as chaves e valores
my_dict [1] = "Olá"
my_dict [2] = "Welcome"
my_dict [3] = "Linuxhint"
#acessar os valores usando chaves
Imprimir (my_dict [1])
Imprimir (my_dict [2])
Imprimir (my_dict [3])
#acessar a chave que faltava ou não definida
my_dict [4]

Saída

O [4] é a chave que falta. Portanto, em vez de aumentar um erro de "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, implementaremos uma função lambda e a passaremos como um argumento para o padrão.

#import o defaultDict do módulo de coleção
De coleções importantes defaultDict
#Criar um DefualtDict
#Passing the Lamnda Funciona como um argumento para o DefaultDict
my_dict = defaultDict (lambda: "A chave não está definida")
#Definindo as chaves e valores
my_dict [1] = "Olá"
my_dict [2] = "Welcome"
my_dict [3] = "Linuxhint"
#acessar os valores usando chaves
Imprimir (my_dict [1])
Imprimir (my_dict [2])
Imprimir (my_dict [3])
#acessar a chave que faltava ou não definida
Imprimir (my_dict [4])

O DefaultDict chama o 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 interna no Python que leva o parâmetro default_factory como um argumento. Se o parâmetro default_factory não estiver definido, a função __missing () __ levanta o erro "KeyError".

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

#import o defaultDict do módulo de coleção
De coleções importantes defaultDict
#Defining uma função para retornar o valor padrão
def my_func ():
print ("A chave não está definida")
#Criar um DefualtDict
#passing o my_func () como um argumento para o defaultDict
my_dict = defaultDict (my_func)
#Definindo as chaves e valores
my_dict [1] = "Linuxhint"
#acessar os valores usando chaves
Imprimir (my_dict [1])
#acessar a chave que faltava ou não definida
my_dict.__missing __ (2)

Saída

A lista e as classes int também podem ser usadas como parâmetros default_factory com defaultDict.

Lista como Parâmetro Default_factory

O DefaultDict é criado com os valores da lista quando a classe de lista é aprovada em um parâmetro default_factory.

#import o defaultDict do módulo de coleção
De coleções importantes defaultDict
# Definindo um padrão
# Classe de lista de aprovação como um default_factory
my_dict = defaultDict (lista)
para i no intervalo (7):
my_dict [i].anexar (i)
#printing os valores
Imprimir (my_dict)

Saída

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

Inteiros como parâmetro default_factory

Se aprovarmos a classe int como um parâmetro default_factory, podemos criar um defaultDict que contém apenas números inteiros. Vamos criar uma lista de números inteiros e depois salvá -lo no padrão.

#import o defaultDict do módulo de coleção
De coleções importantes defaultDict
# Definindo um padrão
# Passando a classe int como um default_factory
my_dict = defaultDict (int)
#Criando uma lista de números inteiros
my_list = [1,2,3]
para eu em my_list:
my_dict [i]+= 1
#printing os valores
Imprimir (my_dict)

Saída

Na saída fornecida, os valores inteiros antes do cólon (:) são chaves, enquanto os valores inteiros após o cólon são valores.

Conclusão

O Dafualtdict é uma classe de dicionário presente no módulo de coleções. Funciona como um dicionário de python, mas não levanta um "terror de key" quando uma chave não é encontrada. Este artigo explica o padrão em detalhes com vários exemplos.