• Python
  • 08. Armazenamento de chaves e valores em dicionários
  • Inicialização de dicionários

08. Dicionários#

Inicialização de dicionários#

Já vimos que podemos criar um dicionário indicando a chave e o valor separados por dois pontos:

precos = {'chocolate': 5.0, 'suco': 4.0}

Podemos guardar qualquer coisa em dicionários, inclusive listas:

colecao = {
  'Felipe': ['brontossauro', 'T-Rex'],
  'Julia': ['Euro', 'Dolar', 'Bitcoin']
}

Ou até outros dicionários:

colecao = {
  'José': {
    "email":"jose@email.com.br",
    "telefone":"99999-4444"
  },
  'Ana': {
    "email":"ana@email.com.br",
    "telefone":"99999-5555"
  }
}

Podemos também criar dicionários vazios de maneira similar às listas:

dicionario_vazio = {}

# Também podemos criar da seguinte maneira
outro_dicionario_vazio = dict()

Tem append?#

Em uma lista temos que usar o método .append() para colocar um elemento extra (criando uma posição nova):

minha_lista = []
minha_lista.append(42)

Em um dicionário isso não é necessário: basta colocar o novo elemento na nova posição (como fazemos quando queremos substituir um elemento em uma lista):

Exercise 1

Considere o código a seguir:

meu_dicionario = {}
meu_dicionario['vida universo e tudo mais'] = 42
print(meu_dicionario)

Ao testar o código acima, o que foi impresso no terminal?

Answer

Ao testar o código acima, foi impresso {'vida universo e tudo mais': 42}.

Foi impresso um dicionário com um item, sendo esse item composto pela chave 'vida universo e tudo mais' e pelo valor 42.

Exercise 2

Vimos que para criar um item novo no dicionário, basta utilizar a seguinte sintaxe: dicionario[nova_chave] = valor_novo.

Perceba que se a chave nova_chave não existir no dicionário, então vamos inserir um item novo no dicionário, mas se a chave nova_chave já existir no dicionário, então vamos atualizar o valor, ao invés de inserir um novo item.

Sabendo disso, considere o código abaixo:

meu_dicionario = {}
meu_dicionario['vida universo e tudo mais'] = 42
meu_dicionario['vida universo e tudo mais'] = 'NÃO ENTRE EM PÂNICO!'

print(meu_dicionario)

O que será impresso no terminal?

Answer

Será impresso {'vida universo e tudo mais': 'NÃO ENTRE EM PÂNICO!'}.

O código meu_dicionario['vida universo e tudo mais'] = 42, cria um item novo no dicionário vazio. Em seguida, o código meu_dicionario['vida universo e tudo mais'] = 'NÃO ENTRE EM PÂNICO!' atualiza o valor 42 armazenado na chave 'vida universo e tudo mais', por 'NÃO ENTRE EM PÂNICO!'.

Exercise 3

Faça o exercício Lista para dicionário.

Acessar exercício

Verificando se uma chave existe#

Exercise 4

Considere o código a seguir:

port2eng = {'couve': 'kale', 'repolho': 'cabbage', 'brocolis': 'broccoli'}

port = 'alface'

eng = port2eng[port]
print('{0} em inglês é {1}'.format(port, eng))
Ao testar o programa, o que foi impresso no terminal?

Answer

Ao testar o código acima deu o erro KeyError: 'alface'.

O resultado esperado do programa acima é o erro KeyError. Por quê?

A chave 'alface' não existe no dicionário, então o dicionário não tem um valor para devolver. Por esse motivo é importante verificarmos se uma chave existe no dicionário antes de tentar acessar seu valor. Para isso utilizamos o operador in.

Exercise 5

Considere o código a seguir:

port2eng = {'couve': 'kale', 'repolho': 'cabbage', 'brocolis': 'broccoli'}

port = 'alface'

if port in port2eng:
    eng = port2eng[port]
    print('{0} em inglês é {1}'.format(port, eng))
else:
    print('A palavra {0} não existe no dicionário'.format(port))
Ao testar o código acima, o que foi impresso no terminal?

Answer

Nesse caso, o programa vai imprimir: A palavra alface não existe no dicionário.

Exercise 6

Resolva o exercício Mês para número. Mesmo se você já o tiver resolvido, resolva novamente utilizando um dicionário, sem while ou for.

Acessar exercício

Exercise 7

Podemos também utilizar o operador in com listas. Considere o código a seguir:

cores = ["laranja", "amarelo", "preto", "verde"]

cor = "vermelho"
if cor in cores:
    print('A cor {0} está presente na lista cores'.format(cor))
else:
    print('A cor {0} não está presente na lista cores'.format(cor))

Ao testar o código acima, o que foi impresso no terminal?

Answer

Ao testar o código acima a mensagem A cor vermelho não está presente na lista cores é impressa no terminal.

Exercise 8

Considere o código a seguir:

port2eng = {'couve': 'kale', 'repolho': 'cabbage', 'brocolis': 'broccoli'}

eng = 'kale'

if eng in port2eng:
    print('A palavra {0} existe no dicionário'.format(eng))
else:
    print('A palavra {0} não existe no dicionário'.format(eng))

Ao testar o código acima, o que foi impresso no terminal?

Answer

Ao testar o código acima a mensagem A palavra kale não existe no dicionário.

Isso ocorre, porque ao utilizar o código eng in port2eng, o Python verifica se a string 'kale' é uma chave no dicionário port2eng.

Podemos pensar no comando como 'kale' in ['couve', 'repolho', 'brocolis'].

Percorrendo um dicionário#

Vamos ver como percorrer um dicionários. 👉 Clique aqui