Criando Dicionários:
dados = dict()
dados = {}
dados = {'nome':'Pedro, 'idade': 25}
print(dados['nome']) Pedro
prind(dados['idade']) 25
Inserindo dados em um Dicionário:
O método append() não funciona nos dicionários
dados['sexo'] = 'M'
print(dados) {'nome':'Pedro, 'idade': 25, 'sexo':'M'}
Apagar dados em um Dicionário:
del dados['idade']
print(dados) {'nome':'Pedro, 'sexo':'M'}
Percorrendo Dicionários:
filme = {'titulo':'Star Wars',
'ano':1977,
'diretor':'George Lucas'
}
keys: 'titulo', 'ano', 'diretor' # é o nome do índice no dicionário
values: 'Star Wars', '1977', 'George Lucas' # é o dado que ocupa o espaço na memória
items: 'titulo':'Star Wars', 'ano':1977, 'diretor':'George Lucas'
print(filme.values())
print(filme.keys())
print(filme.items())
Usando o for
for k, v in filme.items():
print(f'O {k} é {v}')
O título é Star Wars
O ano é 1977
O diretor é George Lucas
Juntando Listas e Dicionários
locadora = [{'titulo':'Star Wars', 'ano':1977 , 'diretor':'George Lucas'}, {'titulo':'Avengers', 'ano': 2012 , 'diretor':'Joss Whedon'}, {'titulo':'Matrix', 'ano': 1999 , 'diretor':'Wachowski'}]
print(locadora[0]['ano']) 1977
print(locadora[2]['titulo') 'Matrix'
locadora = [{'titulo':'Star Wars', 'ano':1977 , 'diretor':'George Lucas'},
{'titulo':'Avengers', 'ano': 2012 , 'diretor':'Joss Whedon'},
{'titulo':'Matrix', 'ano': 1999 , 'diretor':'Wachowski'}
]
for filme in locadora:
print(filme['titulo'])
print('-' * 20)
for cineastas in locadora:
print(cineastas['diretor'])
print('-' * 20)
for tempo in locadora:
print(tempo['ano'])
Star Wars
Avengers
Matrix
--------------------
George Lucas
Joss Whedon
Wachowski
--------------------
1977
2012
1999
Criando Dicionários com a iteração for
Em Dicionários temos o método copy() para copiar os dados pra dentro da lista
Ordenando itens de um dicionário
resultados = {'jogador_1': 4, 'jogador_2': 3, 'jogador_3': 5, 'jogador_4': 1}
Queremos ordenar pela pontuação que cada jogador tem (pelos values e não pelas keys), para tanto será necessário importar o itemgetter da biblioteca operator combinado com o método sorted() para jogarmos dentro de uma nova lista os dados ordenados como se deseja
from operator import itemgetter
resultados = {'jogador_1': 4, 'jogador_2': 3, 'jogador_3': 5, 'jogador_4': 1} # dicionário original
ordenar = [] # lista onde serão jogados os itens do dicionário
print(resultados)
print('-' * 20)
ordenar = sorted(resultados.items(), key=itemgetter(1), reverse=True)
print(ordenar)
sorted(<dicionario.items(), keys=itemgetter(0 para key e 1 para o value)> se quiser em ordem decrescente acrescenta o reverse=True
Ver Exercício 091
Exercícios
090: Faça um programa que leia nome média de um aluno, guardando também a situação em um dicionário. No final, mostre o conteúdo da estrutura na tela.
from random import randint as aleatorio
from time import sleep
from operator import itemgetter
resultados = {}
ordenar = []
for i in range(0, 4):
resultados[f'jogador_{i + 1}'] = aleatorio(1, 6)
# print(resultados)
for k, v in resultados.items():
sleep(1)
print(f'{k}: tirou {v}')
print('-' * 20)
ordenar = sorted(resultados.items(), key=itemgetter(1), reverse=True)
# print(ordenar)
print('== RANKING ==')
for i, jogador in enumerate(ordenar):
print(f' Em {i + 1}º lugar o {jogador[0]} com \033[1m{jogador[1]}\033[m pontos')
sleep(1)