Você está na página 1de 8

INF1025: Introdução à Programação

Monitor: André Vicente Pessanha


Resumo Dicionário​:

***************************************************************************************************

OBS:​ Essa matéria cai somente na P3!

***************************************************************************************************

Definição:

Dicionários são bem parecido com listas. A principal vantagem é a possibilidade de escolher
o tipo (Número ou String) e quais são os valores dos índices! E a principal desvantagem é
não existir ordenação! (O método sort só funciona em listas!)

Lembrando que em listas, a indexação é feita obrigatoriamente com números em >>


Sequência << e não podemos escolher, os índices são sempre fixos.

​ nica​ <<
Em dicionários, o índice é representado por uma chave que identifica de forma >> ú
cada elemento (Um código, nome, cpf, etc) algo que não se repita! ​Não podemos ter
chaves repetidas​!​ ​Pois são os identificadores de cada elemento do dicionário.

OBS: ​Em Banco de dados será dado bastante ênfase nesse conceito que é chamado de
chave primária. (Primary Key)

Então em dicionário precisamos especificar dois campos: ​Chave e valor (​ De cada


elemento)

OBS:​ Lembrando que os elementos em lista são indexados por números inteiros!
(Começando em zero) Enquanto em dicionários, os elementos são indexados por uma
chave de qualquer tipo! (Número ou string)

------------------------------------------------------- // ------------------------------------------------------------

- Como criar uma Dicionário?

EX:​ ​Crie um dicionário que represente os dados de um zoológico onde cada animal
possui um código e um nome.

O primeiro passo é analisar, qual dessas informações é algo >> Único << ? O código ou o
nome?

Como pode ter nomes repetidos e o código identifica cada animal de forma única (Assim
como um CPF) então vamos usar o c​ ódigo​ como ​chave​ do dicionário!
dados = { 100: "Coelho", 255: "Pombo", 353: "Esquilo" }

print(dados) # Exibe o dicionário todo

EX2: Crie um dicionário que represente os dados de um zoológico onde cada animal
possui um nome, um peso e uma altura.

Wait! Agora não temos mais o código, somente nome, peso e altura. Qual deles será o
identificador de cada elemento agora? :O

Como sabemos que é possível ter repetição tanto no peso quanto na altura de um animal.
Então vamos usar o nome como chave do dicionário!

dados = { "Coelho": [18.5 , 4], "Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] }

OBS: ​Notou que dessa vez os índices (Chaves) são strings? :O

OBS:​ O enunciado das questões sempre envolvem tabelas com as informações. Nunca
vamos precisar inventar do além todos esses dados. E na dúvida do identificador, é só
observar na tabela qual das informações nunca se repete. :)

------------------------------------------------------- // ------------------------------------------------------------

- Como acessar o conteúdo de um elemento:

dados = { "Coelho": [18.5 , 4], "Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] }

print( dados[“Coelho”] ) # Exibe o altura e peso [18.5, 4]

OBS:​ Lembrando que em Lista pra acessar o primeiro elemento iríamos usar dados[ 0 ] pois
a contagem dos índices começa em >> Zero << Mas em dicionários >> Não << existe
sequência numérica, podemos usar qualquer valor como índice do elemento!

------------------------------------------------------- // ------------------------------------------------------------

- Como alterar um elemento do dicionário?

dados = { "Coelho": [18.5 , 4], "Cat":[22.7 , 4.5] }


dados[“Cat”] = [23.5, 4.2]

OBS:​ Lembrando que se colocar um nome de chave que >> N ​ ão ​<< existe no dicionário,
como por exemplo “​c​at” (Sem querer com letra minúscula) será inserido como um​ novo
elemento ​no dicionário!!! :(
------------------------------------------------------- // ------------------------------------------------------------

- Verificar se uma chave pertence ao dicionário:

dados = { "Coelho": [18.5 , 4], "Cat":[22.7 , 4.5] }


pet = “Cat”

if( pet in dados):


print(“Esse animal existe no dicionário!”)
else:
print(“Esse animal Não existe no dicionário!”)

OBS: ​Se a chave pertence ao dicionário, a condição if é True, senão False.

------------------------------------------------------- // ------------------------------------------------------------

- Como adicionar um novo elemento no Dicionário?

Temos o seguinte dicionário do Zoológico e queremos adicionar um Pombo com 10cm de


altura e 5kg de peso (Sim, é um Pombo muito pesado! :O )

dados = { "Coelho": [18.5 , 4], "Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] }

dados[“Pombo”] = [10, 5]

OBS: ​É só colocar qualquer nome ou número (Dependendo do tipo da chave) seguido de


uma atribuição com o valor(es)

------------------------------------------------------- // ------------------------------------------------------------

- Como percorrer um dicionário?

dados = { "Coelho": [18.5,4],"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }

for k in dados:
print(k)

OBS:​ A variável >>​ k​ << sempre armazena as chaves (índices) do dicionário! Da mesma
​ ey​ << ou >>
forma como a variável >>​ i​ << em lista! Pra não confundir, recomendo usar >> k
k​ << como nome de variável! Justamente pra lembrar que se trata das chaves do dicionário!
:)

------------------------------------------------------- // ------------------------------------------------------------
- Como remover elementos do dicionário?

EX: ​Remova o elemento “Coelho” do dicionário. (Pombos não gostam de coelhos e estão
criando confusão no Zoológico! :O )

dados = { "Coelho": [18.5,4],"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }

del​ ​dados[“Coelho”]

Mas e se queremos remover do dicionário e retornar os dados do elementos removido?

info = dados.pop("Coelho")
print("Informação do Coelho:", info)
print(dados)

OBS: ​O método pop remove e >>​ Retorna ​<< o valor do elemento removido!

------------------------------------------------------- // ------------------------------------------------------------

Principais Métodos de Dicionário​:

1)​ O Método​ get ​recebe uma chave como parâmetro e retorna seu valor ou a string “None”
se a chave não existe.

dados = {"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }


info = dados.get("Pombo")
print(info)

Podemos especificar no segundo parâmetro a mensagem que será exibida caso a chave
não exista no dicionário:

info = dados.get("Dog", "Não achou! :(")


print(info)

2) ​O método ​keys​ retorna todas as chaves do dicionário.

dados = {"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }

nomes = list(dados.keys())
print(nomes)
OBS​: Esse método retorna uma sequência de valores do tipo >> T ​ upla​ << (Não é do tipo
list!) Então se queremos criar uma lista a partir das chaves do dicionário (Nome dos
animais) precisamos converter para o tipo >> l​ ist ​<<!

3)​ O método ​values​ retorna os valores de todos os elementos do Dicionário.

dados = {"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }

info = list(dados.values())
print(info)

OBS:​ Exatamente o mesmo esquema do método keys, precisamos converter o tipo para
list!

4)​ O método ​update​ insere todas as chaves que​ >> Não << ​estão no dicionário e as que
estão atualiza seu valor.

EX: ​Queremos atualizar o dicionário dados com as informações do dicionários info.

dados = {"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }


info = {"Dog":[21.5, 5], "Cat":[23, 4]}

dados.update(info)
print(dados)

OBS:​ Como a chave ​“Dog”​ não existe no dicionário dados, então ele é adicionado! E como
a chave​ “Cat”​ já existe, então ela é atualizada com os novos valores!

5)​ O método​ copy ​gera uma cópia de um dicionário.

dados = {"Cat":[22.7 , 4.5], "Esquilo":[12.5 , 2.5] , "Pombo":[10,5] }

info = dados.copy()
print(info)

OBS:​ Lembrando que é uma cópia do c ​ onteúdo​ (Chave e valores) do dicionário e da


referência​ dos elementos! E >> ​Não ​<< da referência do dicionário!

Wait! Que negócio é esse de cópia da referência dos elementos!? O_O

​ ão <
Quer dizer que se alterarmos um valor a partir de uma chave, essa alteração >> n ​ <
afeta o dicionário original.

info = dados.copy()
info["Cat"] = [23, 4]
print(dados)
print(info)

Mas se alterarmos um elemento específico da lista que está dentro do dicionário, essa
alteração tb será feita no dicionário original!

info = dados.copy()
info["Cat"][0] = 23
print(dados)
print(info)

E como faz pra clonar um dicionário? (Cópia da referência do dicionário)

info = dados
info["Cat"] = [23,4]
print(dados)
print(info)

OBS:​ Como é feito uma cópia de ambas referências (Dicionário e dos elementos) agora
qualquer alteração (Inclusive as dos exemplos acima) vai alterar o dicionário original!

------------------------------------------------------- // ------------------------------------------------------------

EX: Crie um dicionário com as informações da tabela abaixo e exiba o nome e o IMC
(Peso / Altura ** 2) de cada um.

Nome​ ​Altura​ ​Peso

Huguinho 1.20 45
Luisinho 1.10 60
Zezinho 1.00 100
Patinhas 1.10 40
Donald 1.20 50

dados = {"Huguinho": [1.20,45], "Luisinho": [1.10,60], "Zezinho":[1.00,100], "Patinhas": [1.10,


40], "Donald": [1.20, 50] }

for ​k​ in dados:


print( ​k​ + " IMC: %.2f\n" % (dados[​k​][1] / dados[​k​][0]**2))
EX: A partir do dicionário do item anterior crie uma lista somente com os nomes e
outra só com os valores (Use os métodos de Dicionário)
Calcule o peso médio e atualize o dicionário somando 10% do peso médio se o nome
contém a letra u.

dados = {"Huguinho": [1.20,45], "Luisinho": [1.10,60], "Zezinho":[1.00,100], "Patinhas": [1.10,


40], "Donald": [1.20, 50] }

nomes = ​list​(dados.keys()) # Lembrar de converter!


vals = ​list​(dados.values())

pmed = 0 # Inicializar com zero (Somatório!)


for x in vals:
pmed += x[0]

pmed /= len(nomes) # Calculando a média


pmed *= 0.1 # 10% da média

for x in nomes:
if('u' in x):
dados[x][0] += pmed

f​or k in dados:
print( ​k​ + " Peso: %.2f\n" % (dados[​k​][0]))

EX: Adicione no dicionário a “Clarabela” com altura 2.30 e peso 80Kg e a Peninha
com altura 1.20 e Peso 60Kg.

dados["Clarabela"] = [2.30, 80]


dados["Peninha"] = [1.20, 60]
print(dados)

EX: Remova do dicionário a “Peninha” e exiba na tela suas informações.

info = ​dados.pop​("Peninha")
print(info)

EX: Crie uma cópia do dicionário e altere as informações de Donald e exibe na tela
ambos dicionários.

info = ​dados.copy​()
info["Donald"] = [2.0, 100]
print(dados)
print(info)
------------------------------------------------------- // ------------------------------------------------------------

Você também pode gostar