Dicionários em Python
Um dicionário em Python armazena uma coleção de pares chave-valor, onde cada chave é única e associada a um valor.
A definição de um dicionário tem a seguinte sintaxe:
dictionary = { chave1: valor1, chave2: valor2, ... }
Dentro das chaves {}
Exemplo de definição de dicionário:
users = {1: "Tom", 2: "Bob", 3: "Bill"}
No dicionário users
1
2
Outro exemplo:
emails = {"tom@gmail.com": "Tom", "bob@gmail.com": "Bob", "sam@gmail.com": "Sam"}
No dicionário emails
As chaves e valores não precisam ser do mesmo tipo. É possível utilizar diferentes tipos para as chaves e valores:
objects = {1: "Tom", "2": True, 3: 100.6}
Também é possível criar um dicionário vazio:
objects = {}
ou assim:
objects = dict()
Convertendo listas e tuplas em dicionário
Embora listas e dicionários sejam tipos de dados diferentes, existe a possibilidade de converter listas específicas em dicionários com a função dict()
users_list = [
["+111123455", "Tom"],
["+384767557", "Bob"],
["+958758767", "Alice"]
]
users_dict = dict(users_list)
print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}
Da mesma forma, é possível converter tuplas bidimensionais em um dicionário:
users_tuple = (
("+111123455", "Tom"),
("+384767557", "Bob"),
("+958758767", "Alice")
)
users_dict = dict(users_tuple)
print(users_dict) # {"+111123455": "Tom", "+384767557": "Bob", "+958758767": "Alice"}
Acessando e modificando elementos
Para acessar elementos em um dicionário, basta usar a chave correspondente entre colchetes após o nome do dicionário:
dictionary[chave]
Exemplo de como obter e modificar elementos em um dicionário:
users = {
"+111": "Tom",
"+333": "Bob",
"+555": "Alice"
}
# Obtendo o elemento com a chave "+111"
print(users["+111"]) # Tom
# Alterando o valor do elemento com a chave "+333"
users["+333"] = "Bob Smith"
print(users["+333"]) # Bob Smith
Se uma chave não estiver presente no dicionário, ao tentar acessá-la, será lançada uma exceção KeyError
user = users["+444"] # KeyError
Para evitar esse erro, é possível verificar a presença da chave usando a expressão chave in dicionário
True
key = "+444"
if key in users:
user = users[key]
print(user)
else:
print("Elemento não encontrado")
Outra forma de obter elementos é com o método get()
users = {
"+111": "Tom",
"+333": "Bob",
"+555": "Alice"
}
user1 = users.get("+555")
print(user1) # Alice
user2 = users.get("+333", "Usuário desconhecido")
print(user2) # Bob
user3 = users.get("+444", "Usuário desconhecido")
print(user3) # Usuário desconhecido
Removendo Elementos
Para remover um elemento de um dicionário, é utilizado o operador del
users = {
"+111": "Tom",
"+333": "Bob",
"+555": "Alice"
}
del users["+55555555"]
print(users) # { "+111": "Tom", "+333": "Bob" }
Se a chave não estiver presente, a operação del
KeyError
key = "+555"
if key in users:
del users[key]
print(f"Elemento com a chave {key} removido")
else:
print("Elemento não encontrado")
O método pop()
Ç remove o elemento com a chave especificada e retorna o valor associado a essa chave. Caso a chave não exista, é lançada uma exceçãopop(key)
.KeyError
Ç remove o elemento com a chave especificada e retorna o valor associado a essa chave. Caso a chave não exista, é retornado o valor padrão especificado.pop(key, default)
users = {
"+111": "Tom",
"+333": "Bob",
"+555": "Alice"
}
user = users.pop("+555")
print(user) # Alice
user = users.pop("+444", "Usuário desconhecido")
print(user) # Usuário desconhecido
Para remover todos os elementos de um dicionário, utiliza-se o método clear()
users.clear()
Copiando e Juntando Dicionários
O método copy()
users = {"+111": "Tom", "+333": "Bob", "+555": "Alice"}
students = users.copy()
print(students) # {"+111": "Tom", "+333": "Bob", "+555": "Alice"}
Para unir dois dicionários, use o método update()
users = {"+111": "Tom", "+333": "Bob"}
users2 = {"+2222222": "Sam", "+666": "Kate"}
users.update(users2)
print(users) # {"+111": "Tom", "+333": "Bob", "+222": "Sam", "+666": "Kate"}
print(users2) # {"+222": "Sam", "+666": "Kate"}
Se quiser manter os dois dicionários originais sem alteração e criar um terceiro dicionário com o resultado da união, copie um dicionário antes:
users = {"+111": "Tom", "+333": "Bob"}
users2 = {"+2222222": "Sam", "+666": "Kate"}
users3 = users.copy()
users3.update(users2)
Iterando sobre um Dicionário
Para iterar um dicionário, pode-se usar um loop for
users = {
"+111": "Tom",
"+333": "Bob",
"+555": "Alice"
}
for key in users:
print(f"Telefone: {key} Usuário: {users[key]}")
Outro modo é usar o método items()
for key, value in users.items():
print(f"Telefone: {key} Usuário: {value}")
O método items()
Para iterar apenas pelas chaves, use o método keys()
for key in users.keys():
print(key)
Para iterar apenas pelos valores, use o método values()
for value in users.values():
print(value)
Dicionários Aninhados
Os valores em dicionários podem ser outros objetos como listas, tuplas ou até outros dicionários:
users = {
"Tom": {
"telefone": "+971478745",
"email": "tom12@gmail.com"
},
"Bob": {
"telefone": "+876390444",
"email": "bob@gmail.com",
"skype": "bob123"
}
}
Para acessar elementos de um dicionário aninhado, usa-se duas chaves:
old_email = users["Tom"]["email"]
users["Tom"]["email"] = "supertom@gmail.com"
print(users["Tom"]) # { "telefone": "+971478745", "email": "supertom@gmail.com" }
Se uma chave não estiver presente, um KeyError
Para evitar esse erro, verifique se a chave existe:
key = "skype"
if key in users["Tom"]:
print(users["Tom"]["skype"])
else:
print("skype não encontrado")
Ou use o método get()
tom_skype = users["Tom"].get("skype", "Indefinido")
print(tom_skype) # Indefinido