Enviar um café pro programador

Como adicionar, Alterar e Retirar um Item num Dicionário em Python

Neste tutorial de nosso Curso de Python, vamos aprender como adicionar um novo item em um dicionário, alterar algum valor já existente e retirar algum item do dictionary.

Aprenda primeiro:

Adicionar item em um Dicionário


Vamos pegar o nosso bom e velho dicionário notas:
notas={'João'   :  9,
       'Maria'  : 10,
       'José': 4}

Vamos supor que chegou um novo aluno, o Peart, que já chegou tirando nota 10 também.
No tutorial anterior (método get e setdefault - Como usar), aprendemos como inserir um valor através do método setdefault.

Você também pode inserir um item em um dicionário dict com chave key e valor value simplesmente fazendo a operação direta:

  • dict[ key ] = value


Por exemplo, vamos adicionar o aluno Peart:

notas={'João'   :  9,
       'Maria'  : 10,
       'José': 4}

notas['Peart'] = 10
print(notas)

Simples, não é verdade?
Mas, cuidado, se esta chave já existir, ele vai substituir o valor anterior.

Por isso, é bom só fazer isso se não existir essa nova chave.
Podemos checar isso com o get.

O script abaixo pergunta um nome e uma nota.
Se este nome já existir, o método notas.get(nome) vai retornar algum valor do dicionário, e cai no IF dizendo que o nome já existe.

Se a chave não existir, retorna None por padrão, o método get(), então cai no ELSE, onde fazemos a atribuição e inserimos um novo item no dicionário, veja:

notas={'João'   :  9,
       'Maria'  : 10,
       'José'   : 4  }

nome = input("Digite o nome do aluno: ")
nota = float(input("Nota dele: "))

if notas.get(nome):
    print("Ja existe o aluno ",nome)
else:
    notas[nome] = nota
print(notas)




Como Alterar um Item: in

Agora, vamos aprender como mudar o valor de um determinado item.

A primeira coisa que devemos fazer é confirmar se realmente aquele item existe.
E podemos fazer isso com a instrução in.

Se fizermos key in notas.keys()
Ele vai avaliar se a chave key está na lista de valores de notas.keys()
Se sim, retorna True e cai no IF para podermos alterar o valor.

Se não tiver, retorna False e no ELSE dizemos que o aluno não existe, logo não dá pra alterar o valor dele.

Então, nosso script pra alterar alguma nota, ficaria assim:

notas={'João'   :  9,
       'Maria'  : 10,
       'José'   : 4  }

nome = input("Aluno a mudar a nota: ")
nota = float(input("Nova nota     : "))

if nome in notas.keys():
    notas[nome] = nota
else:
    print("Não existe esse aluno")
print(notas)




Como excluir um item: pop()

Para excluirmos um determinado item, basta usarmos o método pop() que vai receber a key de deletar o item cuja chave é aquela.

Por exemplo, para retirarmos o 'José' do dicionário:

notas={'João'   :  9,
       'Maria'  : 10,
       'José'   : 4  }

print(notas)
notas.pop('José')
print(notas)

O resultado é:

Como adicionar, alterar ou excluir um item de um dicionário em Python


Exercício de Dicionários em Python

Uma escola te contratou para fazer um software em Python.
Eles querem que você crie um script que exiba o seguinte menu:

0. Sair
1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)
2. Inserir aluno e nota
3. Alterar a nota de um aluno
4. Consultar nota de um aluno específico
5. Apagar um aluno da lista
6. Dar a média da turma

Onde a professora que vai fornecer o nome e nota dos alunos. Quantos ela quiser. Quantas vezes quiser.
Implemente esse script usando um dicionário.

Solução: Como usar dicionários em Python

4 comentários:

  1. Olá! Excelente site... Poderia avaliar se minha resposta foi bem desenvolvida?

    def menu():
    print('0. Sair');
    print('1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)');
    print('2. Inserir aluno e nota');
    print('3. Alterar a nota de um aluno');
    print('4. Consultar nota de um aluno específico');
    print('5. Apagar aluno da lista');
    print('6. Dar a média da turma');
    opc = int(input("> "));
    return opc;

    alunos = {
    'Joao': 10.0,
    'Maria': 9.0,
    'Jose': 10.0
    }

    def aluno(act=1,aluno='',nota=0.0):

    if ( act != 0 and act != 1 and act != 6 ):
    nomeAluno = input('Digite nome aluno: ');

    if ( act == 2 ):
    if nomeAluno not in alunos.keys():
    alunos[nomeAluno] = nota;
    else:
    print(nomeAluno + 'já existe na base.');
    elif ( act == 3 ):
    if nomeAluno in alunos.keys():
    alunos[nomeAluno] = nota;
    else:
    print(nomeAluno + 'não existe na base.');
    elif ( act == 4 ):
    if nomeAluno in alunos.keys():
    print(nomeAluno + 'tem nota igual a' + alunos[nomeAluno]);
    else:
    print(nomeAluno + 'não tem nota ou existe na base.');
    elif ( act == 5 ):
    if nomeAluno in alunos.keys():
    alunos.pop(nomeAluno);
    print(nomeAluno + 'excluido da base.');
    else:
    print(nomeAluno + 'não existe na base.');
    else:
    if ( act == 6 ):
    tamanho = len(alunos);
    totalNotas = 0.0;
    for notaAluno in alunos.values():
    totalNotas += notaAluno;
    media = totalNotas / tamanho;
    print("A media é %.2f do total de notas %.2f" %(media, totalNotas));
    if ( act == 1 ):
    for nomeAluno in alunos.keys():
    print('Aluno ' + nomeAluno + ' nota', alunos[nomeAluno]);

    cont = True;

    while cont:
    cont = menu();
    if cont == 1:
    aluno();
    elif cont == 2:
    notaAluno = float(input('Digite nota aluno: '));
    aluno(2,nota=notaAluno);
    elif cont == 3:
    notaAluno = float(input('Digite nova nota aluno: '));
    aluno(3,nota=notaAluno);
    elif cont == 4:
    aluno(4);
    elif cont == 5:
    aluno(5);
    elif cont == 6:
    aluno(6);

    ResponderExcluir
  2. Eu fiz assim:

    def menu():
    sair = int(input('Ddigite 0 para sair ou 1 para prosseguir: '))
    if sair==1:
    print('1. Exibir lista de alunos com sua notaAlternar a nota de um aluno\n2. Alternar a nota de um aluno\n3. Inserir aluno e nota\n4. Consultar nota de um aluno específico\n5. Apagar um aluno da lista\n6. Dar a média da turma')
    op = int(input('Escolha uma opção: '))

    if op==2:
    alternar()
    elif op==1:
    exib()
    elif op==3:
    inserir()
    elif op==4:
    consult()
    elif op==5:
    apagar()
    elif op==6:
    media()
    else:
    print('Opção inválida.')


    def exib():
    notas={'João' : 9,
    'Maria' : 10,
    'José': 4}

    for nome in notas.keys():
    print(nome," tirou nota: ", notas[nome])

    def alternar():

    notas={'João' : 9,
    'Maria' : 10,
    'José' : 4 }

    nome = input("Aluno a mudar a nota: ")
    nota = float(input("Nova nota : "))

    if nome in notas.keys():
    notas[nome] = nota
    else:
    print("Não existe esse aluno")
    print(notas)


    def inserir():
    notas={'João' : 9,
    'Maria' : 10,
    'José' : 4 }
    nome = input("Digite o nome do aluno: ")
    nota = float(input("Nota dele: "))

    if notas.get(nome):
    print("Ja existe o aluno ",nome)
    else:
    notas[nome] = nota
    print(notas)

    def apagar():
    notas={'João' : 9,
    'Maria' : 10,
    'José' : 4 }

    nome=input('Quem você deseja excluir: ')
    notas.pop(nome)
    print(notas)









    nao consegui fazer o 4 e nem o 6 :(

    ResponderExcluir
  3. Eu fiz assim:

    notas = {'Joel': 10, 'Rafael': 9.5, 'Maria': 10}

    menu = int(input("0. Sair;\n"
    "1. Exibir lista de alunos com suas notas;\n"
    "2. Inserir aluno e nota;\n"
    "3. Alterar a nota de algum aluno;\n"
    "4. Nota de um aluno específico;\n"
    "5. Apagar um aluno;\n"
    "6. Média da Turma\n"
    "Digite um dos números: "))

    if menu == 0:
    exit()
    if menu == 1:
    print(notas)
    if menu == 2:
    aluno = input("Digite o nome do aluno: ")
    nota = input("Digite a nota do aluno: ")
    notas[aluno] = nota
    print(notas)
    if menu == 3:
    aluno = input("Digite o nome do aluno: ")
    if notas.get(aluno) == None:
    print('Aluno inexistente')
    else:
    nota = input("Digite a nota correta do aluno: ")
    notas[aluno] = nota
    print(notas)
    if menu == 4:
    aluno = input("Digite o nome do aluno: ")
    if aluno in notas == None:
    print('aluno inexistente')
    else:
    nota = notas[aluno]
    print(f'{aluno} : {nota}')
    if menu == 5:
    aluno = input("Digite o nome do aluno que deseja apagar: ")
    notas.pop(aluno)
    print(notas)
    if menu == 6:
    média = sum(notas.values())
    médiaTotal = média / len(notas)
    print(f'A média total é {médiaTotal}.')
    else:
    print("")

    ResponderExcluir
  4. nome = {"abadia": 4, "luciano": 7, "catia": 8}


    # 0.sair
    def menu():
    continuar = 1

    while continuar:
    continuar = int(
    input(
    "\n0.Sair\n1.Exibir lista de alunos com suas notas (cada aluno tem uma nota)\n2.inserir aluno e nota\n3.alterar a nota de um aluno\n4.consultar a nota de um aluno\n5.apagar um aluno da lista\n6.Dar a média da turma\n"
    )
    )
    if continuar == 0:
    continuar = 0
    elif continuar == 1:
    exibir_alunos()
    elif continuar == 2:
    inserir_alunos()
    elif continuar == 3:
    alterar_nota_do_aluno()
    elif continuar == 4:
    consultar_nota()
    elif continuar == 5:
    apagar_aluno()
    elif continuar == 6:
    media_alunos()

    print("programa encerrado")


    # 1. Exibir lista de alunos com suas notas (cada aluno tem uma nota)


    def exibir_alunos():
    for n in nome.keys():
    print(n, "nota:", nome[n])


    # 2. Inserir aluno e nota


    def inserir_alunos():
    nome_do_aluno = input("digite o nome do aluno ")
    nota = int(input("digite a nota do aluno de 1 a 10 "))

    nome.setdefault(nome_do_aluno, nota)


    # 3. alterar a nota do aluno


    def alterar_nota_do_aluno():
    for n in nome.keys():
    print(n, "nota:", nome[n])

    repetição = 1
    while repetição:
    aluno_nota = input("gual aluno voce deseja mudar a nota ")
    if aluno_nota in nome.keys():
    nova_nota = int(input("novo valor da nota "))
    nome[aluno_nota] = nova_nota
    repetição = 0
    else:
    print("esse aluno nao existe ")


    # 4. consultar a nota de um aluno específico


    def consultar_nota():
    for aluno in nome.keys():
    print(aluno)

    aluno_expecífico = input("digite gual aluno voce deseja ver a nota ")

    while aluno_expecífico not in nome.keys():
    print("esse aluno não existe tente novamente")
    aluno_expecífico = input("digite gual aluno voce deseja ver a nota ")

    print("esse aluno existe e o resultado:")
    print(aluno_expecífico, "nota: ", nome[aluno_expecífico])


    # 5. Apagar um aluno da lista


    def apagar_aluno():
    for aluno in nome.keys():
    print(aluno, "nota:", nome[aluno])

    aluno_excluido = input("digite gual aluno voce deseja exluir")

    while aluno_excluido not in nome.keys():
    print("esse aluno nao exite tente novamente")
    aluno_excluido = input("digite gual aluno voce deseja exluir")

    if aluno_excluido in nome.keys():
    nome.pop(aluno_excluido)

    print("aluno excluido")


    # 6. Dar a média da turma


    def media_alunos():
    soma = 0
    tamanho_dicionario = len(nome)

    for aluno in nome.keys():
    print(aluno, "nota:", nome[aluno])
    soma = soma + nome[aluno]

    media = soma / tamanho_dicionario

    print(soma)
    print(f"a media da nota dos alunos e: {media:.2f}")


    menu()

    ResponderExcluir