Conjuntos & Frozensets
Conjuntos armazenam elementos hasheáveis únicos com testes de associação rápidos. Frozensets são conjuntos imutáveis que você pode usar como chaves de dicionário ou elementos de outros conjuntos.
Busque em todas as páginas da documentação
Conjuntos armazenam elementos hasheáveis únicos com testes de associação rápidos. Frozensets são conjuntos imutáveis que você pode usar como chaves de dicionário ou elementos de outros conjuntos.
seen: set[int] = set()
for value in [1, 2, 2, 3]:
if value not in seen:
seen.add(value)
a, b = {1, 2, 3}, {3, 4}
union = a | b
only_a = a - bQuando usar isso:
def unique_preserve_order(items: list[str]) -> list[str]:
seen: set[str] = set()
result: list[str] = []
for item in items:
if item not in seen:
seen.add(item)
result.append(item)
return result
def jaccard(tags_a: set[str], tags_b: set[str]) -> float:
if not tags_a and not tags_b:
return 1.0
return len(tags_a & tags_b) / len(tags_a | tags_b)
def frozen_key(groups: list[frozenset[str]]) -> dict[frozenset[str], int]:
return {group: len(group) for group in groups}
if __name__ == "__main__":
print(unique_preserve_order(["a", "b", "a", "c"]))
print(jaccard({"py", "ml"}, {"py", "web"}))
print(frozen_key([frozenset({"a", "b"}), frozenset({"c"})]))O que isso demonstra:
dict.fromkeys não oferece controle de ordenação suficiente& e | para interseção e uniãofrozenset como chave de dicionário para agrupamentosa <= b, a < b, a >= b para contenção.{x for x in items if cond} constrói conjuntos diretamente.| Operador | Significado |
|---|---|
| | união |
& | interseção |
- | diferença |
^ | diferença simétrica |
# conjunto vazio - não {}
empty = set()
# adicionar em massa
tags.update(["a", "b", "c"])
# discard vs remove - discard ignora elementos ausentes
tags.discard("missing"){} é um dicionário vazio - Use set() para um conjunto vazio. Correção: set() ou um placeholder {0} apenas se intencional.dict.fromkeys ou loop de desduplicação ordenado.set(s) antes de remover no loop.| Alternativa | Use Quando | Não Use Quando |
|---|---|---|
dict.fromkeys | Chaves únicas que preservam a ordem | Precisa de álgebra de conjuntos |
list + in | n muito pequeno | Verificações de associação grandes |
bloom filter | Escala enorme probabilística | Precisa de associação exata |
pandas.unique | Desduplicação de coluna em dataframes | Script Python simples |
set quando a ordem não importa e a associação é frequente. A desduplicação que preserva a ordem usa dicionário ou loop manual.
Conjunto hasheável - chaves de dicionário, elementos de conjunto, chaves de cache a partir de frozenset de tags.
from functools import reduce; reduce(set.__and__, sets) ou loop com acc &= s.
O mesmo para conjuntos - escolha o operador legível ou o método consistentemente na base de código.
Sim, se todos os elementos forem hasheáveis e comparáveis por igualdade - mas prejudica a clareza; prefira conjuntos homogêneos.
list(dict.fromkeys(items)) - padrão idiomático rápido.
Elementos em um ou outro conjunto, mas não em ambos - comparando concessões de permissão entre ambientes.
{x for x in items if pred(x)} constrói o conjunto diretamente sem lista intermediária.
Operações individuais são atômicas no CPython, mas a leitura-modificação-escrita composta precisa de locks.
set.pop() remove um elemento arbitrário - útil apenas quando qualquer elemento é aceitável.
Versões da Pilha: 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