A linguagem de programação Python inclui vários tipos de dados de contêiner integrados, como listas, tuplas e dicionários. Pense nos contêineres como objetos que contêm outros objetos. Por exemplo, uma lista é um objeto e pode conter objetos como laranja, maçã, banana, pêssego. Um dicionário é um objeto que contém valor chave pares, como “fruta”: “Maçã”, “vegetal”: “Tomate”, “estação”: “Sal”.
Na maior parte, os contêineres integrados serão suficientes para você. Mas quando você precisar manipular estruturas de dados especializadas, você deverá recorrer ao módulo de coleções. Esses contêineres básicos não precisam ser importados. Mas quando precisar de algo um pouco mais complicado, você recorrerá ao módulo de coleções, que adiciona os seguintes contêineres:
Contador– uma subclasse do contêiner do dicionário; usado para contar as ocorrências de um elemento como um iterável.
NamedTuple– semelhante a uma classe, mas sem precisar definir uma classe completa, e cria uma subclasse de Tuplas com campos nomeados.
OrdenadoDict– subclasse de dicionário que retorna um valor padrão, caso uma chave solicitada esteja faltando.
Deque– uma fila dupla que suporta a adição e remoção de elementos do início ou do fim.
Existem outros contêineres (ChainMap, UserDict, Lista de usuários e UserString), mas vamos nos concentrar nos quatro acima.
Agora que você sabe o que o módulo de coleções oferece, vamos ver como funciona cada contêiner.
Contador
O contêiner contador permite contar objetos em um contêiner. Digamos que você precise contar as ocorrências de letras em uma palavra específica. Usaremos a palavra subcontador (porque é divertido de dizer e tem muitas letras repetidas).
Antes de usarmos o contador, temos que importar coleções como esta:
A seguir, definiremos duas variáveis:
palavra = contador do subcontador = {}
palavra=subcontador
contador={}
Com contador = {} definimos um dicionário sem valor, portanto ele servirá como espaço reservado.
Ok, agora vamos criar um loop for para iterar através de nossa variável definida usando um contador para contar os objetos em um contêiner.
O loop for fica assim:
para letra em palavra: se a letra não estiver no contador: contador(letra) = 0 contador(letra) += 1
paracarta empalavra:
secarta nãoemcontador:
contador(carta)=0
contador(carta)+=1
O que o loop for faz é percorrer o contador, adicionando o número de instâncias de cada objeto.
Por fim, usamos o imprimir() funcionar assim:
Todo o nosso aplicativo se parece com isto:
importar coleções palavra = “subbookkeeper” contador = {} para letra em palavra: se a letra não estiver no contador: contador(letra) = 0 contador(letra) += 1 imprimir(contador)
Com NamedTuple, podemos criar estruturas de dados semelhantes a uma classe, mas sem precisar definir uma classe completa. Isso pode ser muito útil ao lidar com detalhes sobre um objeto. Por exemplo, digamos que você esteja criando um aplicativo que adiciona detalhes para um aluno e não deseja criar uma aula completa. Para isso, você pode fazer uso do NamedTuple.
Antes de usá-lo, você deve importá-lo de coleções como esta:
de coleções importar nomeadotuple
decoleçõesimportarnomeadatupla
A seguir, definimos Student com o contêiner nomeadotupule e então criamos uma tupla com fname, name, major e birthday assim:
imprimir(“O principal uso do nome-chave é:”,fim=“”)
imprimir(S.principal)
Nosso aplicativo inteiro é assim:
das coleções importar Nametuple Student = Nametuple(‘Student’, (‘fname’, ‘lname’, ‘major’, ‘birthday’)) S = Student(‘Jack’, ‘Wallen’, ‘theatre’, ‘10311967’) print(“O primeiro nome usando o índice é: “, end=””) print(S(0)) print(“O nome principal usando o nome-chave é: “, end=””) print(S.major)
imprimir(“O primeiro nome usando o índice é:”,fim=“”)
imprimir(S(0))
imprimir(“O principal uso do nome-chave é:”,fim=“”)
imprimir(S.principal)
OrdenadoDict
O contêiner OrderedDict sempre preservará a ordem de uma sequência durante a iteração. Digamos que você tenha um dicionário de pares de chaves parecidos com letra = nome e sempre quis que a ordem em que eles são definidos fosse preservada. Por exemplo, você pode ter:
a = Camila b = Colette c = Arão d = Clara
Você pode querer alterar um nome sem alterar a ordem a, b, c, d. Esta alteração de valor-chave é inerente ao OrderedDict e é usada assim:
Da importação de coleções OrderedDict.
print(“Original:n”) dict = OrderedDict() dict(‘a’) = “Camille” dict(‘b’) = “Colette” dict(‘c’) = “Aaron” dict(‘d’) = “Clara” para chave, valor em dict.items(): print(key, value) print(“nChanged:n”) dict(‘c’) = “Jean” para chave, valor em dict.items( ): imprimir(chave, valor)
imprimir(“Original:n”)
ditar=OrdenadoDict()
ditar(‘a’)=“Camila”
ditar(‘b’)=“Coleta”
ditar(‘c’)=“Arão”
ditar(‘d’)=“Clara”
parachave,valor emditar.Unid():
imprimir(chave,valor)
imprimir(“nAlterado:n”)
ditar(‘c’)=“Jean”
parachave,valor emditar.Unid():
imprimir(chave,valor)
Se você executasse o procedimento acima, a saída seria:
Original:
de Camilo b Colette Aarão Clara
Mudado:
de Camilo b Colette cJean Clara
Como você pode ver, mantivemos a ordem das chaves, mesmo quando o valor de c mudou.
Deque
Deque pode ser muito útil porque permite adicionar um valor a uma coleção no início ou no final.
Digamos que temos o seguinte código:
das coleções importar deque fila = deque((‘nome’,’idade’,’principal’)) print(fila)
decoleçõesimportarárea coberta
fila=área coberta((‘meu’,‘idade’,‘principal’))
imprimir(fila)
Execute esse aplicativo e você obterá:
deque((‘nome’, ‘idade’, ‘maior’))
Incrível.
Agora, digamos que você queira adicionar menor à direita da coleção. Isso poderia ser alcançado com a seguinte adição:
queue.append(‘minor’) print(“nO contêiner após anexar à direita é: “) print(queue)
fila.acrescentar(menor)
imprimir(“nO contêiner após anexar à direita é: “)
imprimir(fila)
Se executarmos o aplicativo agora, obteremos:
deque((‘nome’, ‘idade’, ‘maior’))
área coberta((‘meu’,‘idade’,‘principal’))
O contêiner após anexar à direita é:
deque((‘nome’, ‘idade’, ‘maior’, ‘menor’))
área coberta((‘meu’,‘idade’,‘principal’,menor))
Vamos acrescentar ano à esquerda do contêiner com esta adição ao nosso código:
queue.appendleft(‘Senior’) print(“nO contêiner após anexar à esquerda é: “) print(queue)
fila.anexar à esquerda(‘Senior’)
imprimir(“nO contêiner após anexar à esquerda é: “)
área coberta((‘Senior’,‘meu’,‘idade’,‘principal’,menor))
Ai está. Quatro maneiras muito legais de manipular coleções, graças ao módulo de coleções. Embora você possa não trabalhar com eles desde o início, eventualmente você os achará inestimáveis para manipular dados dentro de uma coleção.
YOUTUBE.COM/THENEWSTACK
A tecnologia avança rápido, não perca um episódio. Inscreva-se em nosso canal no YouTube para transmitir todos os nossos podcasts, entrevistas, demonstrações e muito mais.
SE INSCREVER
Jack Wallen é o que acontece quando um membro da Geração X se funde com o sarcasmo atual. Jack é um buscador da verdade e um escritor de palavras com uma lapiseira quântica e uma batida desconexa de som e alma. Embora ele resida…
Este site utiliza cookies para melhorar sua experiência de navegação. Ao continuar, você concorda com o uso de cookies. Para mais informações, consulte nossa Política de Privacidade.
Funcional
Sempre ativo
O armazenamento ou acesso técnico é estritamente necessário para a finalidade legítima de permitir a utilização de um serviço específico explicitamente solicitado pelo assinante ou utilizador, ou com a finalidade exclusiva de efetuar a transmissão de uma comunicação através de uma rede de comunicações eletrónicas.
Preferências
O armazenamento ou acesso técnico é necessário para o propósito legítimo de armazenar preferências que não são solicitadas pelo assinante ou usuário.
Estatísticas
O armazenamento ou acesso técnico que é usado exclusivamente para fins estatísticos.O armazenamento técnico ou acesso que é usado exclusivamente para fins estatísticos anônimos. Sem uma intimação, conformidade voluntária por parte de seu provedor de serviços de Internet ou registros adicionais de terceiros, as informações armazenadas ou recuperadas apenas para esse fim geralmente não podem ser usadas para identificá-lo.
Marketing
O armazenamento ou acesso técnico é necessário para criar perfis de usuário para enviar publicidade ou para rastrear o usuário em um site ou em vários sites para fins de marketing semelhantes.