Boas Práticas de Coleções
Regras práticas para escolher e usar os contêineres embutidos do Python sem armadilhas de performance ou dívidas de legibilidade.
Busque em todas as páginas da documentação
Regras práticas para escolher e usar os contêineres embutidos do Python sem armadilhas de performance ou dívidas de legibilidade.
dict[str, int]) para contratos mais claros.dict para busca por chave, set para pertinência, list para sequências ordenadas. Documente escolhas não óbvias.deque para filas FIFO/LIFO em vez de list.pop(0). O(1) vs O(n) no início.heapq para escalonamento de prioridade; bisect para inserções ordenadas. Não sorted() a cada inserção.Counter e defaultdict em vez de boilerplate manual de verificação de chave. Menos ramificações, intenção mais clara.copy.deepcopy quando a independência for necessária. dict.copy() compartilha listas internas.sorted(s) apenas para exibição estável.{v: k}. Valores colidentes são sobrescritos silenciosamente.get ou try/except KeyError intencionalmente. d[k] quando a chave deve existir; get quando é opcional.set uma vez para pertinência repetida em loops. Evite in list O(n) em caminhos críticos.sum/any/max para grandes fluxos. Evite materializar listas de um milhão de itens.array.array ou bytes para buffers numéricos/binários compactos. Não lista de inteiros para protocolos de rede.list por estruturas exóticas. Pequenos n favorecem a simplicidade.keys() repetidos, exceto se estiver mutando durante a iteração. Use list(d) ao deletar durante o loop.dict[str, list[Event]], não dict puro. Estruturas autoexplicativas.NamedTuple ou dataclass em vez de indexação de tupla posicional para registros. row[3] obscurece o significado.| para sobreposições de configuração imutáveis (3.9+). base | overrides lê da esquerda para a direita.list(dict.fromkeys(items)). Linha única idiomática.MappingProxyType ou objeto de configurações tipado.[] vs None. Chamadores não devem adivinhar ausente vs vazio.Padrões LRU move_to_end. O dict regular lida com a ordem de inserção caso contrário.
Tupla para pacotes pequenos fixos; lista ao retornar coleção homogênea de tamanho variável.
__slots__ para milhões de objetos pequenos de campo fixo. Prematuro para registros de aplicativos típicos.
Counter adiciona operadores multiset e most_common - prefira para trabalho de frequência.
Converta para dict(defaultdict) antes do JSON - a fábrica não é serializada.
Sim para transformações de map/filter. Mude para loop para efeitos colaterais ou ramificações complexas.
dataclass/Pydantic para objetos de domínio com comportamento; dict para passagem de JSON ou chaves dinâmicas.
Busca de configuração em camadas sem cópia - env sobre padrões. Achate ao persistir.
Quando um conjunto de tags deve ser uma chave de dict ou entrada de cache - caso contrário, use set puro.
Busca linear em lista dentro de loop - corrija com índice de set/dict construído uma vez.
Versões da Stack: Esta página foi escrita para Python 3.14.0 (estável 3.14, manutenção 3.13), FastAPI 0.115+, Django 5.2, Flask 3.1, Pydantic 2, PyTorch 2.6+, pandas 2.2+, Polars 1.x, ruff 0.9+, e uv 0.6+.
Revisado por Chris St. John·Última atualização: 16 de jul. de 2026