Atualizado: 04/11/2024

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 {}, é definida uma sequência de elementos separados por vírgulas, em que para cada elemento é especificada uma chave seguida de um valor, separados por dois pontos.

Exemplo de definição de dicionário:

users = {1: "Tom", 2: "Bob", 3: "Bill"}

No dicionário users, as chaves são números, e os valores são strings. Por exemplo, o elemento com a chave 1 tem o valor "Tom", a chave 2 tem o valor "Bob" e assim por diante.

Outro exemplo:

emails = {"tom@gmail.com": "Tom", "bob@gmail.com": "Bob", "sam@gmail.com": "Sam"}

No dicionário emails, as chaves são strings que representam endereços de e-mail, e os valores também são strings com os nomes dos usuários.

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(). Para isso, a lista deve conter conjuntos de sublistas, em que cada sublista tenha dois elementos: o primeiro será a chave e o segundo, o valor:

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, que retorna True se a chave existir:

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 lançará um KeyError. Portanto, é recomendável verificar a existência da chave antes de tentar removê-la:

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() também pode ser usado para remover elementos e retornar o valor removido. Ele pode ser usado em duas formas:

  • pop(key)Ç 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ção KeyError.

  • pop(key, default)Ç 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.

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() cria uma cópia de um dicionário:

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() retorna uma coleção de tuplas contendo chaves e valores.

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 será lançado:

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
Política de Privacidade

Copyright © www.programicio.com Todos os direitos reservados

É proibida a reprodução do conteúdo desta página sem autorização prévia do autor.

Contato: programicio@gmail.com