Coleções em Python: Dicionários

Começamos os estudos sobre as coleções na linguagem Python: quais são suas principais características e uso. Tudo com exemplos e questões de concursos. Já iniciamos com o artigo sobre listas, tuplas. e sets. Agora, finalizaremos os estudos sobre coleções na linguagem entendendo como usar os dicionários.

Por
12 min. de leitura

Fala, meus consagrados! Tudo beleza com vocês?

Começamos os estudos sobre as coleções na linguagem Python: quais são suas principais características e uso. Tudo com exemplos e questões de concursos.

Já iniciamos com o artigo sobre listas, tuplas. e sets. Agora, finalizaremos os estudos sobre coleções na linguagem entendendo como usar os dicionários.

Então, simbora comigo!


Visão geral

São quatro as coleções em Python:

  • Lista;
  • Tupla;
  • Set; e
  • Dicionário.

Na tabela 1, temos as principais características dessas coleções.

Característica

Lista

Tupla

Set

Dicionário

Ordenada

Sim

Sim

Não

Sim

Mutável

Sim

Não

Sim

Sim

Indexada

Sim

Sim

Não

Sim

Permite membros repetidos

Sim

Sim

Não

Não

Tabela 1: principais características das coleções em Python.

Observação: a partir da versão Python 3.7, os dicionários são ordenados.

Exemplos:

# Lista []
linguagens = ["Python", "Java", "PHP", "C"]

# Tupla ()
linguagens = ("Python", "Java", "PHP", "C")

# Set {}
linguagens = {"Python", "Java", "PHP", "C"}

# Dicionário {}
optimus = {"id": 1, "nome": "Optimus Prime"}


Dicionários

São coleções:

  • Ordenadas;
  • Mutáveis;
  • Indexadas; e
  • Que não permitem membro repetidos.

Os dicionários são coleções para armazenar dados em pares de chave e valor. Eles são escritos com chaves { }.

Com uma série de exemplos, vamos entender o uso de dicionários. Após isso, iremos resolver várias questões que citam essa coleção.

Criando um dicionário

Primeiro ponto é sabermos como criar dicionários em Python. Podemos criar informando os elementos, cada um com sua chave e valor e todos os elementos envoltos em chaves { }:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Imprimindo o dicionário.
print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

Um dicionário pode ser criado a partir de outro, usando o construtor dict(), passando o dicionário original como parâmetro:

# Dicionário original.
optimus1 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Dicionário criado a partir de outro.
optimus2 = dict(optimus1)

print(optimus2)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

Imprimindo uma lista

Para imprimir um dicionário, podemos usar a função print():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Imprimindo o dicionário.
print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

Observação: mesmo que seja informado elementos repetidos na criação de um dicionário, esse set conterá apenas elementos únicos. Os elementos repetidos serão descartados, pois dicionários não permitem elementos repetidos:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8",
    "ano": 1980,
    "ano": 1982
}

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8', 'ano': 1982}

Vejam que citamos duas vezes o elemento “ano” na criação do dicionário, mas na sua impressão, o elemento apareceu apenas uma vez.

Acessando elementos de um dicionário

Para acessar um elemento do dicionário, utiliza-se a chave do elemento (dicionario[“chave”]):

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Acessando o elemento de chave "nome".
print(optimus["nome"]) # Será impresso Optimus Prime

Pode-se usar também o método get(), passando o nome da chave como parâmetro:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Acessando o elemento de chave "tipo".m
print(optimus.get("tipo")) # Será impresso Autobot

Pode-se usar os método keys() para trazer as chaves dos elementos do dicionário e método values(), para os valores dos elementos:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Acessando as chaves dos elementos do dicionário.
print(optimus.keys()) # Será impresso dict_keys(['id', 'nome', 'tipo', 'veículo', 'modelo'])

# Acessando os valores dos elementos do dicionário.
print(optimus.values()) # Será impresso dict_values([1, 'Optimus Prime', 'Autobot', 'Caminhão',
                          'Freightliner Cab-over-engine Class 8'])

Já para obtermos tanto as chaves quanto os valores, podemos usar o método items():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Acessando os elementos do dicionário.
print(optimus.items())

Resultado da execução:

dict_items([('id', 1), ('nome', 'Optimus Prime'), ('tipo', 'Autobot'), ('veículo', 'Caminhão'),
('modelo', 'Freightliner Cab-over-engine Class 8')])

Assim como acontece com as outras coleções, podemos utilizar a estrutura de repetição for para iterar os elementos. Mas para dicionários, podemos iterar tanto chaves e valores ou dois ao mesmo tempo.

Iniciaremos pela iteração das chaves:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

for x in optimus:
    print(x)

Resultado da execução:

id
nome
tipo
veículo
modelo

Pode-se usar o método keys() que a iteração terá o mesmo resultado:

for x in optimus.keys():
    print(x)

Para conseguirmos os valores dos elementos, basta usarmos a notação dicionário[“chave”] ou o método get():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

for x in optimus:
    print(optimus[x]) # Ou poderia ser usado optimus.get(x)

Resultado da execução:

1
Optimus Prime
Autobot
Caminhão
Freightliner Cab-over-engine Class 8

Além dessas duas formas, podemos usar o método values():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

for x in optimus.values():
    print(x)

Resultado da execução:

1
Optimus Prime
Autobot
Caminhão
Freightliner Cab-over-engine Class 8

Por último, vimos que o método items() traz a chave e o valor de cada elemento e podemos iterar da seguinte forma:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

for x, y in optimus.items():
    print(x, y)

Resultado da execução:

id 1
nome Optimus Prime
tipo Autobot
veículo Caminhão
modelo Freightliner Cab-over-engine Class 8

Verificando se um elemento está ou não em um dicionário

A operador in também pode ser usada para verificar se uma chave está no dicionário:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

if "modelo" in optimus: # Ou pode-se usar if "modelo" in optimus.keys():
    print("A chave modelo está no dicionário Optimus")
    # Será impresso A chave modelo está no dicionário Optimus

Nesse caso, será impressa a frase porque a chave “modelo” está no dicionário.

Para verificar se um valor existe no dicionário, usa-se o método values():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

if "Optimus Prime" in optimus.values(): # 
    print("O valor Optimus Prime está no dicionário Optimus")
    # Será impresso O valor Optimus Prime está no dicionário Optimus

Podemos usar os operadores not in para verificar se uma chave ou um valor está no dicionário:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

if "marca" not in optimus: # Ou pode-se usar if "marca" not in optimus.keys():
    print("A chave marca não está no dicionário Optimus")
    # Será impresso A chave marca não está no dicionário Optimus

if "Bumblebee" not in optimus.values():
    print("O valor Bumblebee não está no dicionário Optimus")
    # Será impresso O valor Bumblebee não está no dicionário Optimus

Verificando o tamanho de um dicionário

Para retornar o tamanho de um dicionário (quantidade de elementos), utiliza-se a função len():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

print(len(optimus)) # Será impresso 5

Adicionando elementos em um dicionário

Veremos duas formas para adicionar um elemento no dicionário. Primeiro, podemos criar um novo elemento, informando uma nova chave e seu valor:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus["patente"] = "líder"

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8', 'patente': 'líder'}

A outra forma de inserção de elemento em um dicionário é usando o método update(). Se o item não existir, o item será adicionado. Além disso, podemos adicionar mais de um elemento em um dicionário com esse método. O argumento deve ser um dicionário ou um objeto iterável com pares chave: valor:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus.update({"patente": "líder", "origem": "Cybertron"})

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8', 'patente': 'líder', 'origem': 'Cybertron'}

Ao inserir os elementos das duas formas, os novos elementos ficam no final do dicionário.

Alterando um elemento de um dicionário

As duas formas para adicionar um elemento no dicionário são também usadas para alterar elementos de um dicionário.

Primeiro, podemos alterar o valor de um elemento, informando a sua chave e seu novo valor:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus["tipo"] = "Decepticon"

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Decepticon', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

A outra forma de alteração de elemento em um dicionário é usando o método update(). Com ele, podemos alterar mais de um elemento em um dicionário:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus.update({"id": 15, "tipo": "Decepticon"})

print(optimus)

Resultado da execução:

{'id': 15, 'nome': 'Optimus Prime', 'tipo': 'Decepticon', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

Removendo elementos de um dicionário

Agora, entenderemos formas de remoção de elementos de um dicionário. Começando com a remoção de um elemento específico usando o método pop(), informando qual a chave do elemento a ser excluído do dicionário:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus.pop("tipo")

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'veículo': 'Caminhão', 'modelo': 'Freightliner Cab-over-engine Class 8'}

Ao usar o método pop(), os demais elementos da lista serão remanejados, depois do elemento citado ser excluído.

Observação: se o item a ser removido não existir, pop() gerará um erro.

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Removendo um item que não existe no dicionário.
optimus.pop("origem")

print(optimus)

O elemento “origem” não existe no dicionário, com isso, haverá o erro ao usar o pop():

Traceback (most recent call last):
  File "./prog.py", line 10, in <module>
KeyError: 'origem'

Há outro método chamado popitem(). Com ele, o último elemento do dicionário será excluído:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus.popitem()

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão'}

A última forma de exclusão de um elemento em um dicionário é usando a palavra-chave del, seguida do dicionário e da chave do elemento a ser removido (del dicionário[“chave”]):

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

del optimus["tipo"]

print(optimus)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'veículo': 'Caminhão', 'modelo': 'Freightliner Cab-over-engine Class 8'}

Deletando todos os elementos de um dicionário

Podemos excluir todos os itens da lista usando o método clear():

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus.clear()

print(optimus) # Será impresso {}

Deletando um dicionário inteiro

A palavra-chave del pode ser usada tanto para remover um elemento específico de um dicionário quanto para eliminar a coleção inteira:

optimus = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

del optimus

print(optimus)

Como o dicionário foi deletado, então haverá um erro na linha print(optimus):

Traceback (most recent call last):
  File "./prog.py", line 11, in <module>
NameError: name 'optimus' is not defined

Copiando um dicionário para outro

Pode-se copiar a lista para outra, usando o método copy():

# Dicionário original.
optimus1 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Dicionário criado a partir da cópia do outro.
optimus2 = optimus1.copy()

print(optimus2)

Resultado da execução:

{'id': 1, 'nome': 'Optimus Prime', 'tipo': 'Autobot', 'veículo': 'Caminhão',
'modelo': 'Freightliner Cab-over-engine Class 8'}

Verificando se os dicionários possuem o mesmo conteúdo

Podemos comparar o conteúdo de dois dicionário para sabermos se elas possuem conteúdos iguais. Para isso, utilizamos o operador ==:

optimus1 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus2 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

optimus3 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8",
    "patente": "líder"
}

print(optimus1 == optimus2) # Será impresso True
print(optimus1 == optimus3) # Será impresso False

Verificando se variáveis apontam para o mesmo dicionário

Para este caso, utilizamos o operador is, que verifica se os dicionários são os mesmos, ou seja, se as duas variáveis apontam para o mesmo dicionário:

# Dicionário original.
optimus1 = {
    "id": 1,
    "nome": "Optimus Prime",
    "tipo": "Autobot",
    "veículo": "Caminhão",
    "modelo": "Freightliner Cab-over-engine Class 8"
}

# Duas variáveis apontando para o mesmo dicionário.
optimus2 = optimus1

# Dicionário criado a partir da cópia do outro.
optimus3 = optimus1.copy()

print(optimus1 == optimus2) # Possuem o mesmo conteúdo: True
print(optimus1 is optimus2) # As duas variáveis apontam para o mesmo dicionário: True
print(optimus1 == optimus3) # Possuem o mesmo conteúdo: True
print(optimus1 is optimus3) # As duas variáveis não apontam para o mesmo dicionário, pois houve uma cópia: False

Criando um dicionário de dicionários

Um dicionário pode conter outros, que são chamados de dicionários aninhados.

O primeiro exemplo é o seguinte:

autobots = {
    "optimus" : {
        "modelo" : "Freightliner Cab-over-engine Class 8"
    },

    "bumblebee" : {
        "modelo" : "Volkswagen Type 1"
    },

    "ironHide" : {
        "modelo" : "Nissan Vanette"
    }
}

print(autobots)

Resultado da execução:

{'optimus': {'modelo': 'Freightliner Cab-over-engine Class 8'},
'bumblebee': {'modelo': 'Volkswagen Type 1'}, 'ironHide': {'modelo': 'Nissan Vanette'}}

No primeiro exemplo, já construímos o dicionário autobots com os dicionários aninhados.

Mas podemos criar os dicionários aninhados por fora e depois só relacionamos no dicionário principal:

optimus = {"modelo" : "Freightliner Cab-over-engine Class 8"}
bumblebee = {"modelo" : "Volkswagen Type 1"}
ironHide = {"modelo" : "Nissan Vanette"}

autobots = {
    "optimus" : optimus,
    "bumblebee" : bumblebee,
    "ironHide" : ironHide
}

print(autobots)

Resultado da execução:

{'optimus': {'modelo': 'Freightliner Cab-over-engine Class 8'},
'bumblebee': {'modelo': 'Volkswagen Type 1'}, 'ironHide': {'modelo': 'Nissan Vanette'}}

Funções, métodos, palavras-chave e operadores usados neste artigo

Item Descrição
dict()
Cria um novo dicionário
print(dicionário)
Imprime o valor de uma variável ou expressão
dicionário[chave]
Acessa um elemento específico de um dicionário
dicionário.get(chave)
Acessa um elemento específico de um dicionário
dicionário.keys()
Traz as chaves dos elementos de um dicionário
dicionário.values()
Traz os valores dos elementos de um dicionário
dicionário.items()
Traz tanto as chaves quanto os valores dos elementos de um dicionário
for x in dicionário
Acessa a chave de cada elemento de um dicionário
for x in dicionário.keys()
Acessa a chave de cada elemento de um dicionário
for x in dicionário.values()
Acessa o valor de cada elemento de um dicionário
for x in dicionário.items()
Acessa a chave e o valor de cada elemento de um dicionário
if chave in dicionário
Verifica se uma chave está em um dicionário
if chave in dicionário.keys()
Verifica se uma chave está em um dicionário
if valor in dicionário.values()
Verifica se um valor está em um dicionário
if chave not in dicionário
Verifica se uma chave não está em um dicionário
if chave not in dicionário.keys()
Verifica se uma chave não está em um dicionário
if valor not in dicionário.values()
Verifica se um valor não está em um dicionário
len(dicionário)
Retorna o tamanho de um dicionário (quantidade de elementos)
dicionário[nova chave]: valor
Adiciona um novo elemento em um dicionário
dicionário.update({nova chave 1: valor 1, nova chave 2: valor 2})
Adiciona vários novos elementos novos de uma só vez em um dicionário
dicionário1.update(dicionário2)
Adiciona vários novos elementos de uma só vez em um dicionário a partir de outro, caso as chaves do último sejam diferentes a qualquer chave do primeiro
dicionário[chave]: valor
Altera um elemento em um dicionário
dicionário.update({chave 1: valor 1, chave 2: valor 2})
Altera vários elementos de uma só vez em um dicionário
dicionário1.update(dicionário2)
Altera vários elementos de uma só vez em um dicionário a partir de outro, caso as chaves do último sejam iguais a alguma chave do primeiro
dicionário.pop(chave)
Remove um elemento específico de um dicionário
Ao usá-lo, os demais elementos do dicionário serão remanejados, depois do elemento citado ser excluído
Ao usá-lo, se o item a ser removido não existir, o pop() gerará um erro
dicionário.popitem()
Remove um elemento específico de um dicionário
del dicionário[chave]
Remove um elemento específico de um dicionário
Ao usá-lo, os demais elementos do dicionário serão remanejados, depois do elemento citado ser excluído
Ao usá-lo, se o item a ser removido não existir, a operação com del gerará um erro
dicionário.clear()
Remove todos os itens de um dicionário
del dicionário
Elimina uma coleção inteira
dicionário.copy()
Copia um dicionário para outro
Operador ==
Verifica se dicionários possuem o mesmo conteúdo
Operador is
Verifica se os dicionários são os mesmos, ou seja, se as duas variáveis apontam para o mesmo dicionário

Tabela 1: revisão das funções, métodos, palavras-chave e operadores usados neste artigo.


Questões de concursos

[1] [NC/UFPR 2017 ITAIPU BINACIONAL – Profissional de Nível Superior Jr – Computação ou Informática – Suporte] Três tipos de dados fundamentais em Python são as listas (“lists”), sequências ou ‘tuplas’ (“tuples”) e dicionários (“dictionaries”).

A respeito dessas estruturas, é correto afirmar:

(A) Listas não podem ser modificadas depois de criadas, ao passo que sequências e dicionários podem.

(B) Listas podem ser modificadas, mas seu tamanho não pode ser modificado após a criação, ao passo que sequências e dicionários não têm essa limitação.

(C) Dicionários não podem ser modificados depois de criados, ao passo que listas e sequências podem.

(D) Listas e sequências são indexadas por inteiros, ao passo que dicionários podem ser indexados por “strings”.

(E) Listas e dicionários são indexados por inteiros, ao passo que sequências podem ser indexadas por “strings”.

Comentários:

Uma questão excelente para revisão.

Comentando cada letra:

  • Letra A: “Listas não podem ser modificadas depois de criadas, ao passo que sequências e dicionários podem”;
    • ERRADO. A única coleção que não pode ser modificada é a tupla, que na questão é chamada de sequência;
  • Letra B: “Listas podem ser modificadas, mas seu tamanho não pode ser modificado após a criação, ao passo que sequências e dicionários não têm essa limitação”;
    • ERRADO. A tupla não pode ser modificada e seu tamanho também não. Não há como inserir um novo elemento nem excluir um elemento de uma tupla já criada. As listas, sets e dicionários podem ser modificados;
  • Letra C: “Dicionários não podem ser modificados depois de criados, ao passo que listas e sequências podem”;
    • ERRADO. É o inverso;
  • Letra D: “Listas e sequências são indexadas por inteiros, ao passo que dicionários podem ser indexados por “strings””;
    • CERTO. Como vimos, a indexação dos dicionários são por strings enquanto a indexação das listas e tuplas é por valores inteiros;
  • Letra E: “Listas e dicionários são indexados por inteiros, ao passo que sequências podem ser indexadas por “strings””;
    • ERRADO. Foi explicado na letra D.

Portando, letra D é nosso gabarito.

Gabarito: letra D.

[2] [UFCG 2019 UFCG – Analista de Tecnologia da Informação – Desenvolvimento de Sistemas] Assinale a opção abaixo que contém somente informações corretas. (Marque o texto da letra como CERTO ou ERRADO)

(C) count(d) retorna o número de elementos do dict d.

Comentários:

A função correta para retornar o número de elementos de uma coleção é a função len(d).

Gabarito: ERRADO.

[3] [UFCG 2019 UFCG – Analista de Tecnologia da Informação – Desenvolvimento de Sistemas] Assinale a opção abaixo que contém somente informações corretas. (Marque o texto da letra como CERTO ou ERRADO)

(D) Dicionários em Python 3.7 preservam a ordem de inserção.

Comentários:

Somente a partir da versão Python 3.7, os dicionários são ordenados.

Gabarito: ERRADO.

[4] [UNIRIO 2014 UNIRIO – Analista Tecnologia da Informação – Desenvolvimento de Sistemas] A saída resultante da execução do código Python a seguir é

d1 = dict(a=1,b=2)
d2 = {'a': 1,'b':2}
r1 = d1 == d2
s1 = str('abc')
s2 = str('abc')
r2 = s1 != s2
r3 = len('a')==len('b')
print r1, r2, r3

(A) True True False

(B) False True False

(C) True True True

(D) False False True

(E) True False True

Comentários:

Primeiro, vamos organizar o código:

d1 = dict(a=1,b=2)
d2 = {'a': 1,'b':2}

print(d1) # Será impresso {'a': 1, 'b': 2}
print(d2) # Será impresso {'a': 1, 'b': 2}

r1 = d1 == d2

s1 = str('abc')
s2 = str('abc')

print(s1) # Será impresso abc
print(s2) # Será impresso abc

r2 = s1 != s2

print(len('a')) # Será impresso 1
print(len('b')) # Será impresso 1

r3 = len('a') == len('b')
print(r1, r2, r3) # Será impresso True False True

Comentando cada linha do código:

  • Os dois dicionários (d1 e d2):
    • São criados com o mesmo conteúdo:
      • Chaves “a” e “b”; e
      • Valores 1 e 2, respectivamente;
    • d1 = {‘a’: 1, ‘b’: 2};
    • d2 = {‘a’: 1, ‘b’: 2};
  • A variável r1 recebe a comparação de conteúdo dos dicionários d1 e d2 (d1 == d2):
    • A variável r1 recebe True porque os dicionários possuem o mesmo conteúdo;
  • As strings s1 e s2:
    • São criadas com o mesmo conteúdo: “abc”;
    • s1 = “abc”;
    • s2 = “abc”;
  • A variável r2 recebe a diferença de conteúdo das strings s1 e s2 (s1 != s2):
    • A variável r2 recebe False porque as strings possuem o mesmo conteúdo;
  • A variável r3 recebe a comparação do tamanho das strings “a” e “b” (len(‘a’) == len(‘b’)):
    • A variável r3 recebe True porque as strings “a” e “b” possuem o mesmo tamanho: 1.

O resultado da execução então de print(r1, r2, r3) será True False True. Portanto, letra E é o gabarito.

Gabarito: letra E.

[5] [Instituto AOCP 2020 MJSP – Analista de Governança de Dados – Big Data] Um analista do MJSP armazenou nomes e ID no seguinte programa Python:

01 dados = {
02 'Machado de Assis': 7575,
03 'Santos Dumont': 7475,
04 'Rui Barbosa': 1675,
05 };

Agora, o analista necessita apresentar em tela o ID 7475 referente ao nome informado. Assinale a alternativa que apresenta o código correto para imprimir esse ID na tela para o usuário.

(A) print(7475);

(B) print(dados[nome], ID==7475);

(C) print(ID, ‘Santos Dumont’);

(D) print(dados == ‘Santos Dumont);

(E) print(dados[‘Santos Dumont’]);

Comentários:

Para recuperarmos o ID 7475, temos que citar a chave correspondente do dicionário: dados[‘Santos Dumont’]:

dados = {
    'Machado de Assis': 7575,
    'Santos Dumont': 7475,
    'Rui Barbosa': 1675,
};

print(dados[‘Santos Dumont’]) # Será impresso 7475

Dessa forma, a letra E trouxe o código correto.

Gabarito: letra E.


Referências

  • PensePython2e – Tradução do livro Pense em Python (2ª ed.), de Allen B. Downey. Disponível em: https://penseallen.github.io/PensePython2e/
  • Python. Disponível em: https://www.python.org/
  • Python e Orientação a Objetos. Disponível em: https://www.caelum.com.br/apostila-python-orientacao-a-objetos
  • Python Reference (The Right Way). Disponível em: https://python-reference.readthedocs.io/en/latest/
  • Python Tutorial. Disponível em: htps://www.w3schools.com/python/

 

Então é isso!
[]’s e até a próxima!
_________________________
Professor Rogerão Araújo

Por
12 min. de leitura