Correspondência de sequências e mapeamentos
Desestruture listas e dicionários
Correspondência de sequências e mapeamentos é uma aula grátis de Python Academy no CoddyKit. Esta é a aula 2 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.
Padrões que desestruturam
O verdadeiro poder de match está na desestruturação. Os padrões de sequência e de mapeamento permitem verificar a forma dos dados e extrair valores ao mesmo tempo.
Correspondência com uma lista de tamanho fixo
Um padrão de sequência entre colchetes corresponde a uma lista ou tupla com exatamente esse tamanho, associando cada elemento a um nome.
point = [3, 4]
match point:
case [x, y]:
print('x =', x, 'y =', y)O tamanho deve corresponder
Um padrão com dois elementos não corresponde a uma sequência com três elementos. Cada caso verifica tanto a estrutura quanto o tamanho.
data = [1, 2, 3]
match data:
case [a, b]:
print('pair')
case [a, b, c]:
print('triple:', a, b, c)Combinando literais e capturas
Você pode fixar algumas posições como literais e capturar outras. Isso corresponde apenas a sequências que começam com o literal fornecido.
command = ['move', 10, 20]
match command:
case ['move', dx, dy]:
print('moving by', dx, dy)
case ['stop']:
print('stopping')Capturando o restante com *
Um nome precedido por asterisco captura quaisquer elementos restantes como uma lista, de forma semelhante ao desempacotamento estendido.
items = [1, 2, 3, 4, 5]
match items:
case [first, *rest]:
print('first:', first)
print('rest:', rest)Padrões vazios e unitários
Os padrões de sequência tratam os casos extremos de forma clara: uma lista vazia, um único elemento ou muitos elementos.
def describe(seq):
match seq:
case []:
return 'empty'
case [x]:
return 'one: ' + str(x)
case [x, *rest]:
return 'many, first ' + str(x)
print(describe([]))
print(describe([9]))
print(describe([1, 2, 3]))Correspondência com dicionários
Um padrão de mapeamento usa chaves. Ele verifica se as chaves fornecidas estão presentes e associa seus valores. Chaves adicionais no assunto são permitidas.
event = {'type': 'click', 'x': 10, 'y': 20}
match event:
case {'type': 'click', 'x': x, 'y': y}:
print('click at', x, y)Correspondência parcial de chaves
Um padrão de mapeamento exige apenas as chaves que você listar. As outras chaves são ignoradas, o que é ótimo para mensagens com campos opcionais.
event = {'type': 'key', 'code': 'A', 'extra': 1}
match event:
case {'type': 'key', 'code': code}:
print('key pressed:', code)Capturando as chaves restantes
Use **rest para capturar todos os pares chave-valor não correspondentes em um dicionário.
event = {'type': 'move', 'dx': 5, 'dy': 7}
match event:
case {'type': 'move', **rest}:
print('move details:', rest)Aninhando padrões
Os padrões podem ser aninhados livremente. Você pode corresponder a um dicionário que contenha uma lista, desestruturando ambos ao mesmo tempo.
data = {'name': 'grid', 'size': [3, 4]}
match data:
case {'name': name, 'size': [w, h]}:
print(name, 'is', w, 'by', h)Strings não são sequências aqui
Os padrões de sequência deliberadamente não correspondem a strings ou sequências de bytes, embora sejam iteráveis. Isso impede que uma string seja desestruturada acidentalmente caractere por caractere.
value = 'hi'
match value:
case [a, b]:
print('matched as sequence')
case str():
print('matched as string')Verificação rápida
O que o padrão [first, *rest] associa ao corresponder a [1, 2, 3, 4]?
Recapitulação
Você aprendeu a desestruturar listas e dicionários.
- Os padrões de sequência verificam o tamanho e associam os elementos.
*restcaptura os itens restantes da lista.- Os padrões de mapeamento correspondem às chaves; chaves adicionais são permitidas.
**restcaptura os pares restantes do dicionário; os padrões podem ser aninhados.
Perguntas Frequentes
A aula “Correspondência de sequências e mapeamentos” é grátis?
Sim — o texto completo de “Correspondência de sequências e mapeamentos” é 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 “Correspondência de sequências e mapeamentos”?
Desestruture listas e dicionários 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 2 de 4.
Quanto tempo leva a aula “Correspondência de sequências e mapeamentos”?
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
- Noções básicas de match e case
- Correspondência de sequências e mapeamentos
- Padrões de classes
- Guardas e curingas