Dicionários Python

Em Python, um dicionário é uma coleção ordenada (a partir do Python > 3.7) de pares de chave: valor.

Da documentação do Python 3

As principais operações em um dicionário são armazenar um valor com alguma chave e extrair o valor dada a chave. Também é possível excluir um par chave:valor com del.

Exemplo de Dicionário:

# Dicionário: coleção de pares chave-valor
meu_gato = {
    'tamanho': 'gordo',          # chave: 'tamanho', valor: 'gordo'
    'cor': 'cinza',         # chave: 'cor', valor: 'cinza'
    'disposicao': 'barulhento'    # chave: 'disposicao', valor: 'barulhento'
}

Definir chave, valor usando o operador de subscrito []

# Adicionar ou atualizar entrada do dicionário usando o operador de subscrito
meu_gato = {
 'tamanho': 'gordo',
 'cor': 'cinza',
 'disposicao': 'barulhento',
}
meu_gato['idade_anos'] = 2  # Adicionar novo par chave-valor
print(meu_gato)
{'tamanho': 'gordo', 'cor': 'cinza', 'disposicao': 'barulhento', 'idade_anos': 2}

Obter valor usando o operador de subscrito []

Caso a chave não esteja presente no dicionário, é levantada uma KeyError.

meu_gato = {
 'tamanho': 'gordo',
 'cor': 'cinza',
 'disposicao': 'barulhento',
}
print(meu_gato['tamanho'])
gordo
print(meu_gato['cor_olho'])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: 'cor_olho'

values()

O método values() obtém os valores do dicionário:

# Iterar sobre os valores do dicionário usando o método .values()
animal_estimacao = {'cor': 'vermelho', 'idade': 42}
for valor in animal_estimacao.values():  # Percorrer todos os valores
    print(valor)
vermelho
42

keys()

O método keys() obtém as chaves do dicionário:

# Iterar sobre as chaves do dicionário usando o método .keys()
animal_estimacao = {'cor': 'vermelho', 'idade': 42}
for chave in animal_estimacao.keys():  # Percorrer todas as chaves
    print(chave)
cor
idade

Não há necessidade de usar .keys() pois, por padrão, você percorrerá as chaves:

# Iterar diretamente sobre o dicionário percorre as chaves (comportamento padrão)
animal_estimacao = {'cor': 'vermelho', 'idade': 42}
for chave in animal_estimacao:  # Equivalente a for chave in animal_estimacao.keys()
    print(chave)
cor
idade

items()

O método items() obtém os itens de um dicionário e os retorna como uma Tupla:

animal_estimacao = {'cor': 'vermelho', 'idade': 42}
for item in animal_estimacao.items():
    print(item)
('cor', 'vermelho')
('idade', 42)

Usando os métodos keys(), values() e items(), um loop for pode iterar sobre as chaves, valores ou pares chave-valor em um dicionário, respectivamente.

# Iterar sobre pares chave-valor usando o método .items()
animal_estimacao = {'cor': 'vermelho', 'idade': 42}
for chave, valor in animal_estimacao.items():  # Desempacotar tupla em chave e valor
    print(f'Chave: {chave} Valor: {valor}')
Chave: cor Valor: vermelho
Chave: idade Valor: 42

get()

O método get() retorna o valor de um item com a chave fornecida. Se a chave não existir, ele retorna None:

# Método .get(): recupera o valor com segurança, retorna None se a chave não existir
esposa = {'nome': 'Rose', 'idade': 33}

f'O nome da minha esposa é {esposa.get("nome")}'  # Retorna 'Rose'
'O nome da minha esposa é Rose'
f'Ela tem {esposa.get("idade")} anos.'
'Ela tem 33 anos.'
f'Ela é profundamente apaixonada por {esposa.get("marido")}'
'Ela é profundamente apaixonada por None'

Você também pode alterar o valor padrão None para um de sua escolha:

esposa = {'nome': 'Rose', 'idade': 33}

f'Ela é profundamente apaixonada por {esposa.get("marido", "amante")}'
'Ela é profundamente apaixonada por amante'

Adicionar itens com setdefault()

É possível adicionar um item a um dicionário desta forma:

esposa = {'nome': 'Rose', 'idade': 33}
if 'tem_cabelo' not in esposa:
    esposa['tem_cabelo'] = True

Usando o método setdefault, podemos tornar o mesmo código mais curto:

esposa = {'nome': 'Rose', 'idade': 33}
esposa.setdefault('tem_cabelo', True)
esposa
{'nome': 'Rose', 'idade': 33, 'tem_cabelo': True}

Remover Itens

pop()

O método pop() remove e retorna um item com base em uma chave fornecida.

esposa = {'nome': 'Rose', 'idade': 33, 'cabelo': 'castanho'}
esposa.pop('idade')
33
esposa
{'nome': 'Rose', 'cabelo': 'castanho'}
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

O que pop() faz quando chamado em um dicionário?
A. Apenas remove o par chave-valor
B. Remove e retorna o valor para a chave especificada
C. Apenas retorna o valor sem removê-lo
D. Remove todos os itens do dicionário

popitem()

O método popitem() remove o último item em um dicionário e o retorna.

esposa = {'nome': 'Rose', 'idade': 33, 'cabelo': 'castanho'}
esposa.popitem()
('cabelo', 'castanho')
esposa
{'nome': 'Rose', 'idade': 33}

del

O método del remove um item com base em uma chave fornecida.

esposa = {'nome': 'Rose', 'idade': 33, 'cabelo': 'castanho'}
del esposa['idade']
esposa
{'nome': 'Rose', 'cabelo': 'castanho'}

clear()

O método clear() remove todos os itens em um dicionário.

esposa = {'nome': 'Rose', 'idade': 33, 'cabelo': 'castanho'}
esposa.clear()
esposa
{}

Verificando chaves em um Dicionário

pessoa = {'nome': 'Rose', 'idade': 33}

'nome' in pessoa.keys()
True
'altura' in pessoa.keys()
False
'pele' in pessoa # Você pode omitir keys()
False

Verificando valores em um Dicionário

pessoa = {'nome': 'Rose', 'idade': 33}

'Rose' in pessoa.values()
True
33 in pessoa.values()
True

Impressão Formatada (Pretty Printing)

import pprint

esposa = {'nome': 'Rose', 'idade': 33, 'tem_cabelo': True, 'cor_cabelo': 'castanho', 'altura': 1.6, 'cor_olho': 'castanho'}
pprint.pprint(esposa)
{'altura': 1.6,
 'cor_cabelo': 'castanho',
 'cor_olho': 'castanho',
 'idade': 33,
 'nome': 'Rose',
 'tem_cabelo': True}

Mesclar dois dicionários

Para Python 3.5+:

dict_a = {'a': 1, 'b': 2}
dict_b = {'b': 3, 'c': 4}
dict_c = {**dict_b, **dict_a}
dict_c
{'a': 1, 'b': 3, 'c': 4}
Quiz

Faça login para responder este quiz e acompanhar seu progresso de aprendizagem

Ao mesclar dois dicionários usando {**dict_b, **dict_a}, o que acontece se ambos os dicionários tiverem a mesma chave?
A. O valor de dict_b sobrescreve o valor de dict_a
B. O valor de dict_a sobrescreve o valor de dict_b
C. Ambos os valores são mantidos em uma lista
D. Um erro é levantado