segunda-feira, 27 de novembro de 2023

19. Variáveis Compostas (Dicionários)

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

estado = dict()
brasil = list()
for c in range(0, 3):
    estado['uf'] = str(input('Unidade Federativa: '))
    estado['sigla'] = str(input('Sigla do Estado: '))
    brasil.append(estado.copy())
for e in brasil: # varre a lista brasil
    for k, v in e.items(): # varre cada dicionario dentro da lista brasil
        print(f'O campo {k} tem valor {v}.')
_____________________________________
Unidade Federativa: Ceará Sigla do Estado: CE Unidade Federativa: Bahia Sigla do Estado: BA Unidade Federativa: Rio de Janeiro Sigla do Estado: RJ O campo uf tem valor Ceará. O campo sigla tem valor CE. O campo uf tem valor Bahia. O campo sigla tem valor BA. O campo uf tem valor Rio de Janeiro. O campo sigla tem valor RJ.

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.


091: Crie um programa onde 4 jogadores joguem um dado e tenham resultados aleatórios. Guarde esses resultados em um dicionário. No final, coloque esse dicionário em ordem, sabendo que o vencedor tirou o maior número no dado.
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)

092: Crie um programa que leia nome, ano de nascimento e carteira de trabalho e cadastre-os (com idade) em um dicionário se por acaso a CTPS for diferente de ZERO, o dicionário receberá também o ano de contratação e o salário. Calcule e acrescente, além da idade, com quantos anos a pessoa vai se aposentar (35 anos de contribuição).

093: Crie um programa que gerencie o aproveitamento de um jogador de futebol. O programa vai ler o nome do jogador e quantas partidas ele jogou. Depois vai ler a quantidade de gols feitos em cada partida. No final, tudo será guardado em um dicionário, incluindo o total de gols feitos durante o campeonato.
{'nome': 'Joelson', 'gols': [2, 1, 0, 0, 3], 'total': 6}

094: Crie um programa que leia nome, sexo e idade de várias pessoas, guardando os dados de cada pessoa em um dicionário e todos os dicionários em uma lista. No final, mostre:
a) Quantas pessoas foram cadastradas
b) A média de idade do grupo
c) Uma lista com todas as mulheres
d) Uma lista com todas as pessoas com idade acima da média

095: Aprimore o Exercício 093 para que ele funcione com vários jogadores, incluindo um sistema de visualização de detalhes do aproveitamento de cada jogador.






Nenhum comentário:

Postar um comentário

Observação: somente um membro deste blog pode postar um comentário.