Pitão

Python Namedtuple

Python Namedtuple

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:

  1. Usando as chaves
  2. Usando os índices
  3. 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ções
importar 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ções
importar 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:-

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:

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ções
importar 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ções
importar 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.

Como mostrar a sobreposição de OSD em aplicativos e jogos Linux em tela cheia
Jogar jogos em tela cheia ou usar aplicativos em modo de tela cheia sem distração pode cortar você das informações relevantes do sistema visíveis em u...
Top 5 cartas de captura de jogos
Todos nós vimos e amamos streaming de jogos no YouTube. PewDiePie, Jakesepticye e Markiplier são apenas alguns dos melhores jogadores que ganharam mil...
Como desenvolver um jogo no Linux
Uma década atrás, poucos usuários de Linux preveriam que seu sistema operacional favorito um dia seria uma plataforma de jogos popular para videogames...