Dicionários
Um dicionário (dict) é uma estrutura de dados utilizada para representar uma coleção de pares chave-valor em Python.
Enquanto uma lista utiliza posições para acessar seus elementos, um dicionário utiliza chaves.
Por exemplo:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}Nesse caso, temos três pares:
"nome" → "Ana"
"idade" → 25
"cidade" → "Joinville"A chave identifica o valor que queremos acessar.
Estrutura
Um dicionário é representado por elementos entre chaves {}.
Cada elemento possui uma chave e um valor, separados por ::
pessoa = {
"nome": "Ana",
"idade": 25
}Podemos representar sua estrutura da seguinte forma:
Dicionário
┌──────────────────┐
│ "nome" → "Ana" │
│ "idade" → 25 │
└──────────────────┘A chave é utilizada para localizar o valor correspondente.
Criação de dicionários
Um dicionário pode ser criado utilizando chaves:
pessoa = {
"nome": "Ana",
"idade": 25
}Também podemos criar um dicionário vazio:
dados = {}Ou utilizando o construtor dict():
dados = dict()Também podemos criar um dicionário diretamente com dict():
pessoa = dict(nome="Ana", idade=25)
print(pessoa)Resultado:
{'nome': 'Ana', 'idade': 25}Chaves
Cada chave identifica um valor dentro do dicionário.
Por exemplo:
produto = {
"nome": "Notebook",
"preco": 3500,
"estoque": 10
}Temos as chaves:
nome
preco
estoqueE seus respectivos valores:
Notebook
3500
10Uma chave não pode aparecer mais de uma vez no mesmo dicionário.
Se uma chave for informada novamente, seu valor será atualizado:
pessoa = {
"nome": "Ana",
"idade": 25
}
pessoa["idade"] = 26
print(pessoa)Resultado:
{'nome': 'Ana', 'idade': 26}Acesso aos valores
Podemos acessar um valor utilizando sua chave:
pessoa = {
"nome": "Ana",
"idade": 25
}
print(pessoa["nome"])
print(pessoa["idade"])Resultado:
Ana
25A expressão:
pessoa["nome"]significa:
obtenha o valor associado à chave
"nome".
Se tentarmos acessar uma chave que não existe, será gerada uma exceção KeyError:
print(pessoa["cidade"])Acesso utilizando get()
O método get() também permite acessar um valor.
pessoa = {
"nome": "Ana",
"idade": 25
}
print(pessoa.get("nome"))Resultado:
AnaA principal diferença é o comportamento quando a chave não existe.
Com []:
print(pessoa["cidade"])ocorre um KeyError.
Com get():
print(pessoa.get("cidade"))o resultado é:
NoneTambém podemos definir um valor padrão:
print(pessoa.get("cidade", "Não informado"))Resultado:
Não informadoAdicionar elementos
Podemos adicionar um novo par chave-valor utilizando a atribuição:
pessoa = {
"nome": "Ana",
"idade": 25
}
pessoa["cidade"] = "Joinville"
print(pessoa)Resultado:
{'nome': 'Ana', 'idade': 25, 'cidade': 'Joinville'}Se a chave já existir, seu valor será atualizado:
pessoa["idade"] = 26Portanto, a mesma sintaxe pode ser utilizada tanto para adicionar quanto para atualizar um elemento.
Atualizar elementos
Podemos atualizar diretamente um valor:
produto = {
"nome": "Notebook",
"preco": 3500
}
produto["preco"] = 3200
print(produto)Resultado:
{'nome': 'Notebook', 'preco': 3200}Também podemos utilizar update() para atualizar vários valores:
produto.update({
"preco": 3200,
"estoque": 15
})Remover elementos
O método pop() remove um elemento utilizando sua chave e retorna o valor removido:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
cidade = pessoa.pop("cidade")
print(cidade)
print(pessoa)Resultado:
Joinville
{'nome': 'Ana', 'idade': 25}Também podemos utilizar del:
del pessoa["idade"]
print(pessoa)Se quisermos remover todos os elementos, podemos utilizar clear():
pessoa.clear()
print(pessoa)Resultado:
{}Verificar se uma chave existe
O operador in verifica se uma chave pertence ao dicionário:
pessoa = {
"nome": "Ana",
"idade": 25
}
print("nome" in pessoa)Resultado:
TrueTambém podemos utilizar not in:
print("cidade" not in pessoa)Resultado:
TrueÉ importante perceber que o in verifica as chaves, e não os valores:
print("Ana" in pessoa)Resultado:
FalseTamanho do dicionário
A função len() retorna a quantidade de pares chave-valor:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
print(len(pessoa))Resultado:
3Obter as chaves
O método keys() retorna as chaves do dicionário:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
print(pessoa.keys())Podemos percorrer as chaves utilizando for:
for chave in pessoa.keys():
print(chave)Resultado:
nome
idade
cidadeComo keys() é iterável, também é comum escrever diretamente:
for chave in pessoa:
print(chave)Obter os valores
O método values() permite acessar os valores:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
print(pessoa.values())Também podemos percorrer os valores:
for valor in pessoa.values():
print(valor)Resultado:
Ana
25
JoinvilleObter chaves e valores
O método items() permite percorrer os pares chave-valor:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
for chave, valor in pessoa.items():
print(chave, valor)Resultado:
nome Ana
idade 25
cidade JoinvilleEssa é uma forma bastante utilizada quando precisamos trabalhar simultaneamente com a chave e o valor.
Dicionários podem armazenar diferentes tipos
Os valores de um dicionário podem ser de diferentes tipos:
dados = {
"nome": "Ana",
"idade": 25,
"altura": 1.68,
"ativo": True
}Também podemos armazenar listas:
aluno = {
"nome": "Ana",
"notas": [8, 9, 10]
}Nesse caso:
print(aluno["notas"])Resultado:
[8, 9, 10]Podemos acessar diretamente um elemento da lista:
print(aluno["notas"][0])Resultado:
8Também podemos armazenar outros dicionários:
aluno = {
"nome": "Ana",
"endereco": {
"cidade": "Joinville",
"estado": "SC"
}
}Para acessar a cidade:
print(aluno["endereco"]["cidade"])Resultado:
JoinvilleDicionários aninhados
Quando um dicionário contém outros dicionários, temos uma estrutura de dicionários aninhados.
Por exemplo:
alunos = {
"001": {
"nome": "Ana",
"idade": 20
},
"002": {
"nome": "Bruno",
"idade": 22
}
}Podemos acessar os dados de um aluno utilizando as chaves:
print(alunos["001"]["nome"])Resultado:
AnaPercorrer um dicionário
Podemos percorrer diretamente as chaves:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
for chave in pessoa:
print(chave)Para acessar também os valores:
for chave in pessoa:
print(chave, pessoa[chave])Ou utilizando items():
for chave, valor in pessoa.items():
print(chave, valor)Ordenação
Dicionários preservam a ordem de inserção dos elementos.
Por exemplo:
pessoa = {
"nome": "Ana",
"idade": 25,
"cidade": "Joinville"
}
for chave, valor in pessoa.items():
print(chave, valor)Os elementos serão percorridos na ordem em que foram inseridos.
É importante, porém, diferenciar isso de uma lista: o acesso aos valores de um dicionário é feito principalmente por chave, e não pela posição.
Exemplo prático
Podemos utilizar um dicionário para representar um produto:
produto = {
"nome": "Notebook",
"preco": 3500,
"estoque": 10
}Podemos consultar o preço:
print(produto["preco"])Atualizar o preço:
produto["preco"] = 3200Adicionar uma nova informação:
produto["categoria"] = "Informática"E percorrer todos os dados:
for chave, valor in produto.items():
print(f"{chave}: {valor}")Resultado:
nome: Notebook
preco: 3200
estoque: 10
categoria: InformáticaPrincipais métodos
| Método | Função |
|---|---|
get() | Obtém um valor a partir de uma chave |
keys() | Retorna as chaves |
values() | Retorna os valores |
items() | Retorna os pares chave-valor |
update() | Adiciona ou atualiza elementos |
pop() | Remove um elemento pela chave |
clear() | Remove todos os elementos |
Também podemos utilizar:
| Operação | Função |
|---|---|
dict[chave] | Acessa ou modifica um valor |
in | Verifica se uma chave existe |
not in | Verifica se uma chave não existe |
len() | Retorna a quantidade de pares |
Exemplo completo
O exemplo abaixo demonstra algumas das principais operações realizadas com um dicionário:
aluno = {
"nome": "Ana",
"idade": 20,
"curso": "Computação"
}
print("Dados do aluno:")
print(aluno)
print("\nNome:")
print(aluno["nome"])
aluno["idade"] = 21
print("\nApós atualizar a idade:")
print(aluno)
aluno["cidade"] = "Joinville"
print("\nApós adicionar a cidade:")
print(aluno)
print("\nChaves:")
for chave in aluno.keys():
print(chave)
print("\nValores:")
for valor in aluno.values():
print(valor)
print("\nDados:")
for chave, valor in aluno.items():
print(f"{chave}: {valor}")
aluno.pop("cidade")
print("\nApós remover a cidade:")
print(aluno)Conclusão
O dict é uma estrutura de dados utilizada para representar coleções de pares chave-valor.
Suas principais características são:
- Os dados são organizados em pares chave-valor.
- As chaves identificam os valores.
- Uma chave não pode aparecer mais de uma vez.
- Uma chave existente pode ter seu valor atualizado.
- É possível adicionar e remover pares.
- O acesso aos valores é realizado utilizando suas chaves.
- Os valores podem ser de diferentes tipos.
- Dicionários podem conter listas e outros dicionários.
- Podemos percorrer chaves, valores ou pares chave-valor.
A principal ideia é:
chave → valorPor exemplo:
aluno = {
"nome": "Ana",
"idade": 20
}Nesse caso:
"nome" → "Ana"
"idade" → 20O dicionário é especialmente útil quando queremos representar informações em que cada valor possui uma identificação que permite localizá-lo.