O Pacote Collections do Python

Cansado de programar?

Cansado(a) de quebrar a cabeça para aprender a programar Python de verdade?

Conheça a melhor e mais completa formação de Python e Django e sinta-se um programador verdadeiramente competente. Além de Python e Django, você também vai aprender Banco de Dados, SQL, HTML, CSS, Javascript, Bootstrap e muito mais!

Quero aprender Python e Django de Verdade! Quero aprender!
Suporte

Tire suas dúvidas diretamente com o professor

Suporte

Projetos práticos voltados para o mercado de trabalho

Suporte

Formação moderna com foco na prática profissional

Salve salve Pythonista :wave:

As estruturas de dados são elementos fundamentais na programação e desempenham um papel crucial na eficiência e organização do código.

A linguagem de programação Python possui uma biblioteca chamada Collections, que traz um conjunto de estruturas de dados adicionais além das já presentes na biblioteca padrão.

Neste artigo, abordaremos as estruturas de dados mais utilizadas do pacote Collections do Python e como elas podem auxiliar no desenvolvimento de aplicações mais eficientes e flexíveis.

Vá Direto ao Assunto…

Antes de explorarmos as estruturas de dados disponíveis no pacote Collections, é importante destacar que essa biblioteca oferece alternativas otimizadas para as estruturas padrão do Python, como listas e dicionários.

Além disso, as estruturas do Collections também são altamente eficientes na manipulação e armazenamento de dados.

A Collection defaultdict

Uma das estruturas de dados mais utilizadas do pacote Collections é o defaultdict.

Diferente do dicionário tradicional, o defaultdict aceita uma função que será chamada quando um valor não existir.

Por exemplo, se tentarmos acessar um elemento que não está presente no dicionário, em vez de retornar um KeyError, o defaultdict irá criar o elemento utilizando a função especificada.

1
2
3
4
from collections import defaultdict

dicionario = defaultdict(int)
dicionario['chave'] += 1

Nesse exemplo, o dicionário dicionario utiliza a função int como padrão para os valores que não foram inicializados previamente.

Caso a chave não exista, o valor será inicializado como 0.

Dessa forma, podemos incrementar o valor de dicionario['chave'] mesmo sem ter atribuído um valor inicial a ele.

Está curtindo esse conteúdo? :thumbsup:

Que tal receber 30 dias de conteúdo direto na sua Caixa de Entrada?

Sua assinatura não pôde ser validada.
Você fez sua assinatura com sucesso.

Assine as PyDicas e receba 30 dias do melhor conteúdo Python na sua Caixa de Entrada: direto e sem enrolação!

A Collection Counter

Outra estrutura de dados interessante é o Counter, que permite contar elementos em uma lista ou qualquer objeto iterável.

Esse contador é implementado como um dicionário de contadores, onde cada elemento é mapeado para uma contagem.

1
2
3
4
5
from collections import Counter

lista = ['a', 'b', 'c', 'a', 'b', 'a']
contador = Counter(lista)
print(contador)

A saída será:

1
Counter({'a': 3, 'b': 2, 'c': 1})

O Counter também oferece métodos úteis, como a possibilidade de encontrar os elementos mais comuns, remover ou adicionar elementos.

A Collection deque

Um tipo de estrutura de dados frequente na programação é a fila, que segue o princípio FIFO (First In, First Out).

O pacote Collections oferece a classe deque, que permite criar uma fila com todas as operações de inserção e remoção eficientes.

1
2
3
4
5
6
7
from collections import deque

fila = deque()
fila.appendleft(1)
fila.appendleft(2)
fila.appendleft(3)
print(fila)

A saída será:

1
deque([3, 2, 1])

Perceba que utilizamos o método appendleft para inserir os elementos na fila, simulando o comportamento FIFO.

Essa função é mais eficiente em uma fila do que o método append, que insere o elemento no final.

A Collection namedtuple

Outra estrutura de dados muito útil é o namedtuple, um subtipo de tupla que atribui nomes fixos aos elementos.

Com o namedtuple, podemos criar uma classe de tupla personalizada sem a necessidade de criar uma classe completa.

1
2
3
4
5
6
from collections import namedtuple

Pessoa = namedtuple('Pessoa', ['nome', 'idade'])
p1 = Pessoa('João', 25)
print(p1.nome)  # João
print(p1.idade)  # 25

Aqui, criamos um namedtuple chamado Pessoa com os campos nomee idade.

Em seguida, instanciamos esse tipo de dado e atribuímos valores aos seus campos.

Por fim, podemos acessar esses campos como atributos da instância.

Quer aprender isso e muito mais e se tornar um Expert em Python e Django? Então clique no botão abaixo e venha fazer parte da Jornada Python agora mesmo!

Jornada Python Jornada Python

A Collection OrderedDict

Por fim, temos o OrderedDict, uma variante do dicionário padrão que mantém a ordem dos elementos de acordo com a inserção.

Enquanto o dicionário padrão do Python não garante uma ordem específica, o OrderedDict lembra a ordem de inserção dos elementos.

1
2
3
4
5
6
from collections import OrderedDict

dicionario = OrderedDict()
dicionario['chave1'] = 1
dicionario['chave2'] = 2
print(dicionario)

A saída será:

1
OrderedDict([('chave1', 1), ('chave2', 2)])

A ordem dos elementos no OrderedDict é preservada de acordo com a ordem de inserção.

Isso é útil em diversas situações em que é necessário iterar sobre os itens do dicionário de acordo com a ordem de inserção.

Conclusão

O pacote Collections do Python oferece uma gama de estruturas de dados adicionais às já presentes na biblioteca padrão, trazendo alternativas otimizadas para listas, dicionários e outros tipos de dados.

Neste artigo, apresentamos algumas das estruturas de dados mais utilizadas, como o defaultdict, Counter, deque, namedtuple e OrderedDict.

Ao utilizar essas estruturas de dados, é possível melhorar a eficiência do código e deixar o código mais legível e organizado. Com o defaultdict, podemos evitar o uso de condicionais para verificar a existência de chaves em dicionários.

O Counter facilita a contagem de elementos em listas e objetos iteráveis.

O deque oferece uma implementação otimizada de uma fila.

O namedtuple permite a criação de classes de tuplas personalizadas de forma mais simples.

E o OrderedDict mantém a ordem dos elementos inseridos em um dicionário, facilitando a iteração sobre eles.

Portanto, conhecer e utilizar as estruturas de dados disponíveis no pacote Collections do Python é fundamental para programadores que desejam desenvolver aplicações mais eficientes e organizadas.

Experimente essas estruturas de dados e aproveite ao máximo seus recursos.

#newsletter Olá :wave: Curtiu o artigo? Então faça parte da nossa Newsletter! Privacidade Não se preocupe, respeitamos sua privacidade. Você pode se descadastrar a qualquer momento.