How to write an alphabetical agenda of Names, if the dictionary structure has no order?

Asked

Viewed 942 times

0

Write a program that receives as many entries as the user wants and then create a new contact for each entry (Name, Phone, Address, Email), and finally prints, in alphabetical order, the contact book :

Nomes = []
Telefones = []
Endereços = []
Emails = []
Agenda = {"Nome": Nomes,"Telefone":Telefones,"Endereço":Endereços, "Email": Emails}
entrada = ""
while entrada != "s":
    print("Bem-vindo a nossa Agenda!!!!!")
    nome = input("Digite o nome: ")
    Nomes.append(nome)
    telefone = input("Digite o telefone: ")
    Telefones.append(telefone)
    endereço = input("Digite o endereço: ")
    Endereços.append(endereço)
    email = input("Digite o email: ")
    Emails.append(email)
    print(Agenda)
    entrada = input("Deseja sair? ")
    if entrada.lower() == "s":
        print(Agenda)
        break

The agenda is a dictionary and it has no ordination! How can I print the calendar in alphabetical order of names, followed by other information (Phone, Address, Email) ?

2 answers

2


nomes = []
telefones = []
endereços = []
emails = []

Agenda = {"Nome": nomes,
          "Telefone": telefones,
          "Endereço": endereços,
          "Email": emails
          }

entrada = ""
while entrada.lower() != "s":
    print("Bem-vindo a nossa Agenda!!!!!")

nome = input("Digite o nome: ")
nomes.append(nome)

telefone = input("Digite o telefone: ")
telefones.append(telefone)

endereço = input("Digite o endereço: ")
endereços.append(endereço)

email = input("Digite o email: ")
emails.append(email)

entrada = input("Deseja sair? ")
if entrada.lower() == "s":

    ordenada = sorted(Agenda['Nome'])

    for nome in ordenada:
        i = Nomes.index(nome)
        for chave, valor in Agenda.items():
            if chave == 'Email':
                print('{}: {}.\n'.format(chave, valor[i]))
            else:
                print('{}: {}.'.format(chave, valor[i].title()))
  • What makes the zip? I don’t understand

  • The agenda is not in alphabetical order of names!

  • The zip serves to aggregate the elements of an iterator. In this case he takes a position from his lists, for example, position 0, and gathers them into a list of tuples, where each tuple is a contact. The for loop traverses each tuple and displays its contents.

0

Nomes = []
Telefones = []
Endereços = []
Emails = []
Agenda = {"Nome": Nomes,"Telefone":Telefones,"Endereço":Endereços,
          "Email": Emails}
entrada = ""

print("Bem-vindo a nossa Agenda!!!!!")
while entrada != "s":

    nome = input("Digite o nome: ")
    Nomes.append(nome)
    telefone = input("Digite o telefone: ")
    Telefones.append(telefone)
    endereço = input("Digite o endereço: ")
    Endereços.append(endereço)
    email = input("Digite o email: ")
    Emails.append(email)
    #print(Agenda)
    entrada = input("Deseja sair? ")
    print()
    if entrada.lower() == "s":
        ordenada = sorted(Agenda['Nome']) 
        for nome in ordenada:  
            print()
            print("Nome: ",Agenda['Nome'][Nomes.index(nome)])
            print("Telefone: ",Agenda['Telefone'][Nomes.index(nome)])
            print("Endereço: ",Agenda['Endereço'][Nomes.index(nome)])
            print("Email: ",Agenda['Email'][Nomes.index(nome)])
            print()
        break

Browser other questions tagged

You are not signed in. Login or sign up in order to post.