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. OrderedDictpreserva 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
- Counter
- defaultdict
- deque
- namedtuple e OrderedDict