Dicionários e conjuntos
Associações por chave, frequências, operações de conjuntos e escolha de estruturas.
Dicionários
-
{"Ana": 15}associa a chave ao valor;d["Ana"]consulta-a. Atribuir à mesma chave substitui o valor;del d[chave]elimina a associação. -
Chaves têm de ser hashable: hash estável e objetos iguais com hashes iguais. Strings, inteiros e tuplos de elementos hashable servem; listas, dicionários e conjuntos mutáveis não.
-
Valores podem ser mutáveis. Para agrupar listas por chave, cria uma lista própria por grupo, evitando partilha acidental.
-
chave in dtesta chaves.d[chave]lançaKeyErrorse faltar;d.get(chave, padrao)devolve o padrão sem inserir. -
keys,valueseitemspermitem percorrer chaves, valores e pares. A ordem de inserção é conservada, mas não é uma ordenação por chave. Não alteres o conjunto de chaves durante o percurso.
contagem = {}
for nome in ["Ana", "Bruno", "Ana"]:
contagem[nome] = contagem.get(nome, 0) + 1
print(contagem)Executa o código para ver a saída e os gráficos.
A saída é {'Ana': 2, 'Bruno': 1}.
- Cada ocorrência acrescenta 1; o padrão zero inicia uma chave nova.
- Uma entrada vazia deixa
{}. Usasorted(contagem)apenas se a apresentação exigir chaves ordenadas.
Conjuntos
- Um
setguarda elementos únicos e hashable, sem índices nem ordem de saída garantida. set()é o conjunto vazio;{}é um dicionário.
No esquema, Python tem Ana, Bruno e Carla; Robótica tem Bruno e Duarte. A tabela lê-se contra o diagrama:
| Operação | Seleção | Resultado |
|---|---|---|
A | B | Pelo menos um conjunto | Ana, Bruno, Carla, Duarte |
A & B | Ambos | Bruno |
A - B | A sem B | Ana, Carla |
A ^ B | Exatamente um | Ana, Carla, Duarte |
- A diferença não é comutativa:
B - Acontém Duarte. A <= Btesta inclusão;A < Bexige inclusão e conjuntos diferentes.addacrescenta;discardretira se existir;removefalha se faltar.frozenseté imutável e pode ser chave de dicionário.
Escolha da estrutura
| Precisas de | Usa |
|---|---|
| Ordem e repetições | Lista |
| Sequência sem alterar o recipiente | Tuplo |
| Unicidade, sem duplicados | Conjunto |
| Associações, contagens ou agrupamentos | Dicionário |
Converter ['Ana', 'Ana', 'Bruno'] em conjunto perde as frequências.
Para eliminar repetidos mantendo a primeira ocorrência, percorre a lista com um conjunto de vistos: acrescenta à saída apenas os nomes ainda não vistos.