A estrutura faz parte da solução
Uma lista mantém uma sequência e permite elementos repetidos. Um conjunto representa valores únicos e suporta testes de pertença. Um dicionário associa chaves a valores. Escolhe a estrutura a partir do significado dos dados, não apenas da sintaxe mais curta.
Partilhar e copiar
A atribuição b = a não copia uma lista: ambos os nomes referenciam o mesmo objeto. Uma cópia superficial cria uma nova lista, mas objetos mutáveis internos podem continuar partilhados. Antes de alterar uma estrutura, percebe quem mais depende dela.
Aplicação guiada no trabalho
Um importador precisa de contar IDs únicos e manter a ordem original para auditoria. Usa um conjunto para pertença quando a ordem não interessa, mas conserva a sequência se o contrato a exigir. Não assumas que ordenar elimina duplicados. Quando passas uma lista para uma função, a atribuição partilha o objeto; append pode ser visível no chamador. Uma cópia superficial separa a lista exterior, mas deixa listas ou dicionários interiores partilhados. Decide se pretendes mutação, cópia superficial ou uma reconstrução dos campos necessários. Confirma também o valor devolvido pelos métodos: ids.sort() modifica ids e devolve None; sorted(ids) devolve uma nova lista. Esta distinção explica muitos resultados inesperados sem culpar concorrência ou a origem dos dados.
Duplicados antes de construir um mapping
Um dict criado a partir de pares repetidos conserva apenas um valor por chave. Se as linhas deveriam ter IDs únicos, verifica a repetição enquanto a lista ou o fluxo ainda conserva cada ocorrência. Contar as chaves do mapping final não recupera as linhas substituídas. Define rejeição, reconciliação ou atualização conforme o contrato; a escolha do construtor não deve decidir silenciosamente a política de negócio.
Preservar ordem e multiplicidade
A ordenação de listas é estável: elementos com a mesma chave mantêm a ordem relativa de entrada. Não acrescenta automaticamente outro critério de negócio. Na reconciliação, distingue presença de frequência. set elimina repetições, enquanto Counter construído a partir de IDs hashable conserva quantas vezes cada um apareceu. Duas listas com o mesmo tamanho e o mesmo conjunto podem ter contagens diferentes por ID. Escolhe a representação pela informação que o contrato precisa de preservar.
owners = {"batch": "ops", "report": "data"}
team = owners.get("api", "unassigned")
unique_ids = set([101, 101, 102])Queres contar ficheiros únicos recebidos por dia. Um conjunto evita duplicados, mas perde a ordem de chegada. Se a ordem tiver significado, mantém também a sequência original.
Armadilhas comuns
Assumir cópia na atribuição; esquecer objetos interiores partilhados; atribuir o retorno de sort.
Tópicos relacionados: Funções pequenas, contratos claros · Erros e ficheiros com contexto
Uma atribuição partilha referências. Escolhe a coleção e a profundidade da cópia de forma consciente.
Referência: Python 3.14: Shallow and deep copying · Python 3.14; DR Python 2026.3