Dicionários
Os dicionários do Python, ou dictionaries (também comumente referenciados como dicts), são mais uma estrutura para armazenar dados. Ao contrário de listas e tuplas, dicionários são não sequenciais, armazenando o que são chamados pares chave-valor. Ou seja, o índice, ao invés de ser um número sequencial, como nas listas, é definido pelo próprio usuário, podendo ser um número, string, um objeto.
Criando um dicionário, acessando e modificando suas informações
Para criar um dicionário, usamos as chaves ({}
). Os elementos seguem o formato “chave” : “valor”
. Vejamos no exemplo para que fique mais claro:
aluno = {"nome": "José", "idade": 20, "nota": 9.2}
print(aluno)
> {'nome': 'José', 'idade': 20, 'nota': 9.2}
Como já se deve imaginar, é possível criar um dicionário vazio, definindo apenas as chaves, sem elementos dentro:
dict_vazio = {}
print(dict_vazio)
> {}
Para acessar os dados de um dicionário, usamos o mesmo formato das listas. Porém, como o índice é nomeado, usaremos o nome para resgatar o valor, ao invés do índice numérico:
print(aluno["nome"])
print(aluno["idade"])
> José
> 20
Se tentarmos acessar uma chave que não existe no dicionário, o Python retorna um erro:
print(aluno["Peso"])
> Traceback (most recent call last):
> File "<stdin>", line 1, in <module>
> KeyError: 'Peso'
Para modificar um valor, novamente, fazemos como nas listas. Basta indicar a chave que se deseja alterar e definir o novo valor. A inclusão de um novo item no dicionário é feita da mesma forma, utilizando uma chave que ainda não foi utilizada no mesmo:
aluno["nota"] = 8.2
aluno["peso"] = 74
print(aluno)
> {'idade': 20, 'nome': 'José', 'nota': 8.2, 'peso': 74}
Repare como a chave "peso"
e seu valor foram adicionados, além da alteração no valor da chave "nota"
.
Para remover uma determinada chave e seu valor, usamos o del
. Para apagar todas as chaves e valores, usamos o método clear
, chamado através do dicionário:
del aluno["idade"]
print(aluno)
aluno.clear()
print(aluno)
> {'nome': 'José', 'nota': 8.2, 'peso': 74}
> {}
Funções úteis para trabalhar com dicionários
Algumas das funções que utilizamos com as listas também funcionam com os dicionários. É o caso da função len()
, por exemplo, que retorna a quantidade de pares chave : valor
do dicionário (vamos aproveitar para redefinir o dicionário aluno
que limpamos no último exemplo:
aluno = {"nome": "José", "idade": 20, "nota": 9.2}
print(len(aluno))
> 3
Outra funcionalidade que também funciona com dicionários é a verificação da existência de uma chave através do in
:
print("idade" in aluno)
print("peso" in aluno)
> True
> False
Mas temos outras funções úteis para trabalhar com dicionários. Vamos ver algumas delas.
get()
A função get()
é muito útil para evitar erros de chave inexistente. Ela recebe dois parâmetros, que são a chave a ser buscada e um valor de retorno. Ela retorna o valor de desta chave se ela existir no dicionário, e se não existir, retorna aquilo que definimos como valor de retorno, ou None
se nenhum valor de retorno for definido:
aluno = {"nome": "José", "idade": 20, "nota": 9.2}
print(aluno.get("nome"))
print(aluno.get("peso"))
print(aluno.get("peso", "Não existe"))
> José
> None
> Não existe
items(), keys() e values()
A função items()
retorna uma lista de tuplas com os pares “chave” : valor
. Já a função keys()
retorna uma lista apenas com as chaves do dicionário. E a função values()
retorna uma lista apenas com os valores dos itens do dicionário:
print(aluno.items())
print(aluno.keys())
print(aluno.values())
> dict_items([('idade', 20), ('nota', 9.2), ('nome', 'José')])
> dict_keys(['idade', 'nota', 'nome'])
> dict_values([20, 9.2, 'José'])
update()
A função update()
recebe um dicionário como parâmetro e insere os pares deste dicionário parâmetro no dicionário através do qual a função é chamada. Caso existam chaves coincidentes, o dicionário através do qual a função foi chamada é atualizada com os valores do dicionário passado como parâmetro:
aluno_original = {"nome": "José", "idade": 20, "nota": 9.2}
aluno_update = {"peso": 75, "nota": 8.7}
aluno_original.update(aluno_update)
print(aluno_original)
> {'nome': 'José', 'idade': 20, 'nota': 8.7, 'peso': 75}
Como podem ver, a chave "peso"
foi adicionada e o valor da chave "nota"
foi modificado.
Conclusão
Neste capítulo aprendemos sobre os dicionários e sua principal diferença para listas. Vimos como criar um dicionário, atualizar e acessar suas informações e também funções que podem vir a ser muito úteis ao trabalhar com eles. No próximo capítulo, veremos rapidamente os sets.