Dicionário
Definição
Os dicionários são coleções de elementos não ordenados, mutáveis e indexados. Não é possível ter elementos duplicados em um dicionário e cada elemento do dicionário é composto por uma chave e um valor.
- Chave – indexa (posiciona) o elemento no dicionário;
- Valor – pode ser um número, uma string, uma lista, uma tupla, um outro dicionário, etc.
A sintaxe básica usada para definir um elemento do dicionário é { ‘chave’ : ‘valor’ }.
Exemplos
Considere a seguinte definição de um dicionário em Python:
aluno = { "nome" : "Maria Flor", "matrícula" : 12345, "telefone" : 999999, "disciplinas" : ["DPW", "OC", "TP1"], "características" : {"sexo": "F", "idade": 19} }
Para ver todos os valores armazenados no dicionário, basta usar
for x in aluno: print(aluno[x])
O Python gera então a seguinte resposta:
Maria Flor 12345 999999 ['DPW', 'OC', 'TP1'] {'sexo': 'F', 'idade': 19}
O programa abaixo verifica o número de itens do dicionário “aluno” e lista todas as chaves com os seus respectivos valores.
print("Número de itens =", len(aluno)) for x, y in aluno.items(): print(x, ":", y)
A resposta é
Número de itens = 5 nome : Maria Flor matrícula : 12345 telefone : 999999 disciplinas : ['DPW', 'OC', 'TP1'] características : {'sexo': 'F', 'idade': 19}
É possível ver apenas alguns elementos do dicionário. No exemplo abaixo, queremos ver o nome, as disciplinas e o sexo do aluno.
print(aluno["nome"]) print(aluno["disciplinas"]) print(aluno["características"]["sexo"])
Abaixo a resposta gerada pelo programa.
Maria Flor ['DPW', 'OC', 'TP1'] F
Considere agora o dicionário “alunos” com duas chaves: “aluno1” e “aluno2”.
alunos = { "aluno1" : { "nome" : "Maria Flor", "matrícula" : 12345, "telefone" : 999999, "disciplinas" : ["DPW", "OC", "TP1"], "características" : {"sexo": "F", "idade": 19} }, "aluno2" : { "nome" : "João Pedro", "matrícula" : 67890, "telefone" : 888888, "disciplinas" : ["LOG", "SO", "TP2"], "características" : {"sexo": "M", "idade": 20} } }
A forma de se extrair os valores do dicionário é semelhante ao que já foi visto acima.
print(alunos["aluno1"]["nome"]) print(alunos["aluno1"]["disciplinas"]) print(alunos["aluno2"]["matrícula"]) print(alunos["aluno2"]["características"]["idade"])
A resposta mostrada pelo Python é:
Maria Flor ['DPW', 'OC', 'TP1'] 67890 20
Métodos
- O método clear() remove todos os elementos de um dicionário. O exemplo abaixo usa o método com o dicionário “aluno” definido na seção anterior.
print("Número de itens =", len(aluno)) print("Usa o método clear()") aluno.clear() print("Número de itens =", len(aluno))
A resposta mostrada pelo programa:
Número de itens = 5 Usa o método clear() Número de itens = 0
- O método copy() cria um novo dicionário que possui os mesmos valores do original. São dois objetos diferentes com id diferentes. Por outro lado, o uso do atributo = apenas dar um segundo nome para o dicionário original.
x = aluno.copy() y = aluno print(id(aluno), aluno, "\n") print(id(x), x, "\n") print(id(y), y)
A resposta abaixo mostra que os dicionários “aluno e “y” são dois nomes para um mesmo dicionário e que o dicionário “x” possui um id diferente.
140429077904896 {'nome': 'Maria Flor', 'matrícula': 12345, 'telefone': 999999, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}} 140429077905280 {'nome': 'Maria Flor', 'matrícula': 12345, 'telefone': 999999, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}} 140429077904896 {'nome': 'Maria Flor', 'matrícula': 12345, 'telefone': 999999, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}}
O próximo exemplo altera elementos dos três dicionários para ver o que acontece.
aluno["nome"] = "Maria Tereza" x["matrícula"] = 202201210 y["telefone"] = 5555555 print(aluno, "\n") print(x, "\n") print(y)
A resposta, como esperada, mostra que os dicionários “alunos” e “y” mantêm os mesmos valores para as chaves.
{'nome': 'Maria Tereza', 'matrícula': 12345, 'telefone': 5555555, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}} {'nome': 'Maria Flor', 'matrícula': 202201210, 'telefone': 999999, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}} {'nome': 'Maria Tereza', 'matrícula': 12345, 'telefone': 5555555, 'disciplinas': ['DPW', 'OC', 'TP1'], 'características': {'sexo': 'F', 'idade': 19}}
- O método fromkeys() pode ser usado para criar um dicionário onde todas as chaves têm o mesmo valor. Neste caso, deve-se usar o construtor dict().
chaves = ('nome', 'matrícula', 'telefone') dicionario1 = dict.fromkeys(chaves) print(dicionario1) print() chaves = ('nome', 'matrícula', 'telefone') dicionario2 = dict.fromkeys(chaves, 100) print(dicionario2)
Note que nenhum valor foi informado para o “dicionario1”, enquanto o valor 100 foi informado para todos os elementos do dicionario2. A resposta do programa é mostrada abaixo.
{'nome': None, 'matrícula': None, 'telefone': None} {'nome': 100, 'matrícula': 100, 'telefone': 100}
- O método get() é uma outra forma usada para obter o valor de uma chave.
print("nome =", aluno.get("nome")) print("nome =", aluno["nome"])
A resposta é
nome = Maria Flor nome = Maria Flor
- O método items() retorna os elementos (chave e valor) do dicionário. O exemplo abaixo usa o dicionário “aluno”.
for x in aluno.items(): print(x)
A resposta do programa é mostrada abaixo.
('nome', 'Maria Flor') ('matrícula', 12345) ('telefone', 999999) ('disciplinas', ['DPW', 'OC', 'TP1']) ('características', {'sexo': 'F', 'idade': 19})
- O método keys() retorna uma lista com as chaves do dicionário. Por exemplo,
print(aluno.keys())
Responde com
dict_keys(['nome', 'matrícula', 'telefone', 'disciplinas', 'características'])
- O método pop() remove o elemento com a chave especificada. Pra remover o elemento com chave “telefone” do dicionário “aluno”, basta escrever
aluno.pop("telefone") print(aluno.keys())
A resposta obtida é
dict_keys(['nome', 'matrícula', 'disciplinas', 'características'])
- O método popitem() remove o último elemento do dicionário. Usando o dicionário “aluno” como exemplo,
aluno.popitem() print(aluno.keys())
Temos como resposta:
dict_keys(['nome', 'matrícula', 'telefone', 'disciplinas'])
- O método setdefault() permite definir um valor para um chave que não existe no dicionário. No exemplo a seguir, temos a consulta a duas chaves do dicionário “aluno”: a primeira (“nome”) existe, enquanto a segunda (“CRA”) não existe. Define-se como padrão o valor “inexistente” para uma chave não encontrada no dicionário.
print("nome =", aluno.setdefault("nome", "inexistente")) print("CRA =", aluno.setdefault("CRA", "inexistente"))
A resposta encontrada corresponde a
nome = Maria Flor CRA = inexistente
- O método update() pode ser utilizado para atualizar os elementos de um dicionário. O exemplo abaixo faz a alteração do valor da chave “matrícula” usando um outro dicionário e depois faz a inclusão de uma nova chave (“sexo”) e o seu valor no “Dicionario1”.
Dicionario1 = { "nome" : "Maria Flor", "matrícula" : 12345 } Dicionario2 = { "matrícula" : 67890 } Dicionario1.update(Dicionario2) Dicionario1.update(sexo = "F") print(Dicionario1)
O “Dicionario1” passa a ter os seguintes elementos:
{'nome': 'Maria Flor', 'matrícula': 67890, 'sexo': 'F'}
- O método values() retorna todos os valores dos elementos do dicionário. Considerando o dicionário “aluno” dos exemplos acima, podemos pedir
print(aluno.values())
A resposta é
dict_values(['Maria Flor', 12345, 999999, ['DPW', 'OC', 'TP1'], {'sexo': 'F', 'idade': 19}])