Python vem com muitas estruturas de dados integradas como listas, dicionários e tuplas para armazenar e gerenciar os dados de forma eficiente. O namedtuple é o contêiner semelhante a um dicionário disponível no módulo "coleções". Semelhante aos dicionários, o namedtuple também contém as chaves que são mapeadas para valores. No entanto, o namedtuple permite acessar os valores por meio de chaves e também por meio de índices. Em comparação com os dicionários Python, acessar os valores por meio de índices é a funcionalidade adicional em namedtuple. Este artigo explica o Python namedtuple em detalhes com exemplos.
Acessando valores do namedtuple
Os valores dentro do namedtuple podem ser acessados das seguintes maneiras:
- Usando as chaves
- Usando os índices
- Usando a função getattr ()
Como o namedtuple converte o campo em atributos, é fácil acessar os valores usando a função getattr ().
Exemplos
Agora vamos ver alguns exemplos para entender a criação e o funcionamento do namedtuple. Para criar e usar o namedtuple, primeiro, precisamos importar o módulo de coleções. No exemplo a seguir, é criado um namedtuple para um professor. As chaves do número nomeado são nome, idade e departamento, respectivamente. Os valores são acessados por meio de índices e chaves.
#importing o módulo de coleçõesimportar coleções
#criando um namedtuple para um professor
#nome, idade e departamento são as chaves
Professor = coleções.namedtuple ('Professor', ['nome', 'idade', 'departamento'])
# criar um novo professor e adicionar os valores
teacher_john = Professor ("John", 29, "Ciência da Computação")
# acessando os valores do professor usando índices
print ("Acessando valores usando índices:")
print ("O nome do professor é:", teacher_john [0])
print ("A idade do professor é:", teacher_john [1])
imprimir ("O departamento do professor é:", teacher_john [2])
#acessando os valores do professor usando as chaves
print ("Acessando valores usando chaves:")
print ("O nome do professor é:", teacher_john.nome)
print ("Idade do professor é:", teacher_john.era)
print ("O departamento do professor é:", teacher_john.departamento)
Resultado
Agora vamos acessar os valores usando a função getattr (). O namedtuple e a chave são passados como um argumento para a função getattr ().
#importing o módulo de coleçõesimportar coleções
#criando um namedtuple para um professor
#nome, idade e departamento são as chaves
Professor = coleções.namedtuple ('Professor', ['nome', 'idade', 'departamento'])
# criar um novo professor e adicionar os valores
teacher_john = Professor ("John", 29, "Ciência da Computação")
# acessando os valores do professor usando a função getattr ()
imprimir (getattr (teacher_john, "nome"))
imprimir (getattr (teacher_john, "idade"))
imprimir (getattr (teacher_john, "departamento"))
Resultado
Operações populares de namedtuple
Algumas funções populares convertem as outras coleções, como listas, dicionários e tuplas em pares nomeados e retornam as informações duplas nomeados. A seguir estão as funções que convertem as outras coleções em namedtuple:-
- _faço()
- _asdict ()
- ** operador
A função _make () converte um objeto iterável como lista e tupla em uma dupla nomeada. A função _asdict () cria um orderDict a partir do namedtuple e o retorna. Por último, o operador ** converte um dicionário em um namedtuple. Além disso, as funções que retornam as informações nomeadas são as seguintes:
- _Campos
- _substituir()
A função _fields () retorna todos os campos do namedtuple, enquanto a função _replace () substitui um determinado valor por outro valor.
Vamos implementar as funções conforme mencionado acima em nosso script Python para converter as diferentes coleções em pares nomeados.
#importing o módulo de coleçõesimportar coleções
#criando um namedtuple para um professor
#nome, idade e departamento são as chaves
Professor = coleções.namedtuple ('Professor', ['nome', 'idade', 'departamento'])
# criar um novo professor e adicionar os valores
teacher_john = Professor ("John", 29, "Ciência da Computação")
#criando uma lista
teacher_list = ["Mark", 30, "Administração de Empresas"]
#criando um dicionário
teacher_dict = 'nome': 'Talor', 'idade': 32, 'departamento': 'Economia'
#using função _make () para converter lista em namedtuple
imprimir ("Lista para conversão nomeada dupla:")
imprimir (professor._make (teacher_list))
#using _asdict () função para fazer um OrderDict
imprimir ("Fazendo o OrderedDict:")
imprimir (professor_john._asdict ())
#usando o ** para converter um dicionário em um namedtuple
print ("Convertendo o dicionário em namedtuple:")
imprimir (Professor (** professor_dict))
Resultado
Agora vamos usar as funções _fields () e _replace () para obter as informações das chaves e substituir as chaves, respectivamente.
#importing o módulo de coleçõesimportar coleções
#criando um namedtuple para um professor
#nome, idade e departamento são as chaves
Professor = coleções.namedtuple ('Professor', ['nome', 'idade', 'departamento'])
# criar um novo professor e adicionar os valores
teacher_john = Professor ("John", 29, "Ciência da Computação")
# using _fields function para obter as chaves de namedtuple
print ("As chaves de namedtuple são:")
imprimir (professor._Campos)
#using _replace function para substituir o valor
print ("O valor de substituição do nome é:")
imprimir (professor_john._replace (name = 'Donald'))
Resultado
Na saída, pode ser visto que a função _fields retorna as chaves de informação, e a função _replace () substitui o nome com sucesso.
Conclusão
O namedtuple é o contêiner semelhante a um dicionário presente no módulo "coleções". Ele contém a chave e mapeia os valores para a chave. Ao contrário do dicionário Python, os valores nomeados de duplas também podem ser acessados usando os índices e a função getattr (). Este artigo explica resumidamente o nome por meio de exemplos.