0Pricing
Python Academy · Aula

namedtuple e OrderedDict

Conheça outras coleções úteis

namedtuple e OrderedDict é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Python Academy, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Python Academy inclui 4 aulas no total.

Mais duas coleções úteis

O módulo collections inclui namedtuple para tuplas semelhantes a registros e de leitura fácil, além de OrderedDict para dicionários com métodos adicionais de ordenação.

Importe-as com from collections import namedtuple, OrderedDict.

from collections import namedtuple, OrderedDict
print(namedtuple)
print(OrderedDict)

Definição de uma tupla nomeada

namedtuple(name, fields) cria uma nova subclasse de tupla. Você fornece o nome do tipo e uma lista de nomes de campos. O resultado é uma classe que pode ser instanciada.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p)

Acesso por nome

A grande vantagem é ler os campos pelo nome, em vez de usar números de índice enigmáticos, o que torna o código muito mais fácil de ler.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p.x)
print(p.y)

Continua sendo uma tupla

Uma tupla nomeada é uma tupla real, portanto a indexação, a descompactação e a iteração continuam funcionando.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
print(p[0])
x, y = p
print(x + y)

Imutável, mas substituível

Assim como todas as tuplas, as tuplas nomeadas são imutáveis. Para obter uma cópia modificada, use ._replace(), que retorna uma nova instância.

from collections import namedtuple
Point = namedtuple('Point', ['x', 'y'])
p = Point(3, 4)
q = p._replace(y=10)
print(p)
print(q)

Conversão para um dicionário

._asdict() transforma uma tupla nomeada em um dicionário comum que associa nomes de campos a valores.

from collections import namedtuple
Car = namedtuple('Car', ['make', 'year'])
c = Car('Toyota', 2026)
print(c._asdict())

Valores padrão

Forneça defaults ao definir uma tupla nomeada. Os valores padrão se aplicam aos campos mais à direita, portanto você pode omiti-los ao criar instâncias.

from collections import namedtuple
User = namedtuple('User', ['name', 'role'], defaults=['guest'])
print(User('Alice'))
print(User('Bob', 'admin'))

Inspeção dos campos

O atributo ._fields lista os nomes dos campos, o que é útil para introspecção ou para criar código genérico.

from collections import namedtuple
Color = namedtuple('Color', ['r', 'g', 'b'])
print(Color._fields)

Noções básicas de OrderedDict

OrderedDict preserva a ordem de inserção. Desde o Python 3.7, os dicionários comuns também preservam a ordem, mas OrderedDict adiciona métodos de ordenação extras que não estão disponíveis de outra forma.

from collections import OrderedDict
od = OrderedDict()
od['first'] = 1
od['second'] = 2
print(od)

move_to_end

.move_to_end(key) desloca uma chave para o fim (ou para o início com last=False). Esse recurso é exclusivo de OrderedDict e é útil para uma lógica no estilo LRU.

from collections import OrderedDict
od = OrderedDict(a=1, b=2, c=3)
od.move_to_end('a')
print(list(od.keys()))
od.move_to_end('c', last=False)
print(list(od.keys()))

Igualdade sensível à ordem

Dois objetos OrderedDict são iguais somente quando seus itens estão na mesma ordem. Dicionários comuns ignoram a ordem nas comparações.

from collections import OrderedDict
a = OrderedDict([('x', 1), ('y', 2)])
b = OrderedDict([('y', 2), ('x', 1)])
print(a == b)
print(dict(a) == dict(b))

Verificação rápida

Como criar uma cópia modificada de uma tupla nomeada, já que ela é imutável?

Recapitulação: tupla nomeada e OrderedDict

Resumo:

  • namedtuple(name, fields) cria registros imutáveis e fáceis de ler, com acesso por nome.
  • Use ._replace() para obter cópias modificadas e ._asdict() para converter em um dicionário.
  • OrderedDict preserva a ordem de inserção e adiciona .move_to_end().
  • A igualdade de OrderedDict é sensível à ordem, ao contrário da igualdade de um dicionário comum.
from collections import namedtuple
Pt = namedtuple('Pt', ['x', 'y'])
print(Pt(1, 2)._asdict())

Perguntas Frequentes

A aula “namedtuple e OrderedDict” é grátis?

Sim — o texto completo de “namedtuple e OrderedDict” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Python Academy, atualize para CoddyKit PRO. O curso de Python Academy inclui 4 aulas no total.

O que vou aprender em “namedtuple e OrderedDict”?

Conheça outras coleções úteis Você pratica Python Academy com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar Python Academy?

Nenhuma experiência prévia é necessária. Python Academy no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.

Quanto tempo leva a aula “namedtuple e OrderedDict”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de Python Academy?

Sim. Cada aula de Python Academy inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. Counter
  2. defaultdict
  3. deque
  4. namedtuple e OrderedDict
← Voltar para Python Academy