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é
> 20Se 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))
> 3Outra 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
> FalseMas 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 existeitems(), 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.