Dicionários em Python são estruturas de dados chave-valor, ou seja temos uma relação entre a chave e o valor associado. Como assim? Imagine que você tem a seguinte situação:
Configuração | Valor |
---|---|
host | 127.0.0.1 |
senha | 123456 |
usuario | demo |
Para representar a tabela acima como um dicionário, fariamos assim:
1 |
>>> meu_dict = {"host": "127.0.0.1", "senha": "123456", "usuario": "demo"} |
Bem simples né. Portanto para se criar um dicionário, utilizamos chaves { } como delimitadores e vírgulas como separadores de cada chave e valor.
Qualquer tipo imutável pode ser uma chave, como por exemplo uma string, um int, floats e até mesmo tuplas, desde que esses não contenham objetos mutáveis dentro delas.
Dizemos também que Dicionários são estruturas não ordenadas, porque as chaves muitas vezes não obedecem a ordem que foram criadas, como mostrado abaixo:
1 2 |
>>> meu_dict {'usuario': 'demo', 'host': '127.0.0.1', 'senha': '123456'} |
O Dicionário “meu_dict” “embaralhou” as chaves. E isso é ruim? Não, não, por que? Porque o que importa nos dicionários não são os índices mas sim as chaves que apontam para os valores.
Como acessar informações de um Dicionário:
Para acessar o valor de uma chave do dicionário devemos utilizar dois colchetes [ ], desta forma meu_dict["chave"]. Para acessar o nome do usuário no dicionário meu_dict basta fazer como no exemplo abaixo
1 2 3 4 5 6 7 8 9 10 |
>>> meu_dict["usuario"] demo >>> meu_dict["chave_que_nao_existe"] # uma exceção é lançada quando se tenta acessar uma chave que não existe Traceback (most recent call last): File "<stdin>", line 1, in <module> KeyError: 'chave_que_nao_existe' >>> meu_dict.get("usuario") # o método get retorna o valor da chave se essa existir, caso contrário retorna None demo >>> meu_dict.get("chave_que_nao_existe", 'valor_default') # caso não exista a chave podemos retornar um valor default 'valor_default' |
Como remover uma chave de um Dicionário:
Para isso podemos utilizar a palavra reservada del, ou o método pop(value) e para limpar tudo de uma vez o método clear():
1 2 3 4 5 6 7 8 9 |
>>> del meu_dict["usuario"] >>> meu_dict {'senha': '123456', 'host': '127.0.0.1'} >>> meu_dict.pop('host') # remove a chave e retorna seu valor '127.0.0.1' >>> {'senha': '123456'} >>> meu_dict.clear() # remove todos os itens de um dicionário >>> meu_dict {} |
Como verificar se uma chave existe no dicionário:
Utilize o operado in:
1 2 3 4 5 6 7 |
>>> meu_dict = {'senha': '123456', 'host': '127.0.0.1'} >>> "host" in meu_dict True >>> "email" in meu_dict False >>> "email" not in meu_dict True |
Adicionando elementos em um dicionário:
Direto na própria chave:
1 2 3 |
>>> meu_dict['email'] = 'endereco@gmail.com' >>> meu_dict {'senha': '123456', 'host': '127.0.0.1', 'email': 'endereco@gmail.com'} |
Ou
1 2 3 |
>>> meu_dict.update({'email': 'endereco@hotmail.com', 'porta': '3306'}) >>> meu_dict {'senha': '123456', 'host': '127.0.0.1', 'email': 'endereco@hotmail.com', 'porta': '3306'} |
Com o método update() atualizamos uma chave já existente com um novo valor ou adicionamos novas chaves caso elas não existam.
Outros métodos importantes:
1 2 3 4 5 6 7 8 |
>>> meu_dict.keys() # retorna um objeto view iterável das chaves do dicionário dict_keys(['senha', 'host', 'email', 'porta']) >>> meu_dict.values() # retorna um objeto view iterável dos valores do dicionário dict_values(['123456', '127.0.0.1', 'endereco@hotmail.com', '3306']) >>> meu_dict.items() # retorna um objeto view iterável de cada item na forma de chave-valor do dicionário dict_items([('senha', '123456'), ('host', '127.0.0.1'), ('email', 'endereco@hotmail.com'), ('porta', '3306')]) |
Para saber mais sobre objetos views, clique aqui
Outras maneiras interessantes de se criar um dicionário, peguei este exemplo na documentação oficial:
1 2 3 4 5 6 7 |
>>> a = dict(one=1, two=2, three=3) >>> b = {'one': 1, 'two': 2, 'three': 3} >>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3])) >>> d = dict([('two', 2), ('one', 1), ('three', 3)]) >>> e = dict({'three': 3, 'one': 1, 'two': 2}) >>> a == b == c == d == e True |
Obrigado e até a próximo tutorial