Python for-l oop многократный вывод input () для каждой итерации словаря contact_emails (не то, что я хочу) - PullRequest
0 голосов
/ 20 февраля 2020
   contact_emails = {

         'Sue Reyn' : 's.reyn@email.com',
         'Mike Filt': 'mike.filt@bmail.com',
         'Nate Arty': 'narty042@nmail.com'
             }

         new_contact = input()

         new_email = input()
         contact_emails[new_contact] = new_email

         for contact in contact_emails:
                      print(new_contact + ' is ' + new_email)

Требуемый вывод

s.reyn@email.com is Sue Reyn
mike.filt@bmail.com is Mike Filt
narty042@nmail.com is Nate Arty
alf1@hmail.com is Alf

вывод, который я получаю

Alf is alf1@hmail.com
Alf is alf1@hmail.com
Alf is alf1@hmail.com
Alf is alf1@hmail.com

Что я делаю не так? Как мне исправить этот код, чтобы он выводил то, что хотел бы вывести?

Ответы [ 4 ]

1 голос
/ 20 февраля 2020
for contact in contact_emails:
    print(new_contact + ' is ' + new_email)

Вы печатаете новый контакт снова и снова. Что вам нужно сделать, это примерно так:

for contact, email in contact_emails.items():
    print(email + ' is ' + contact)

Это повторяет все пары ключ-значение вашего словаря.

0 голосов
/ 20 февраля 2020

Вы повторяете каждый contact в contact_emails, но переменная contact не появляется в вызове print. Вы можете получить доступ к электронной почте, используя имя в contact:

...
for contact in contact_email:
    print(contact_email[contact], 'is', contact)

Помните, что new_email и new_contact назначены вне из l oop, поэтому не изменить на каждой итерации.

0 голосов
/ 20 февраля 2020

Подробнее об итерации словарей читайте здесь - Как перебирать словарь в Python

contact_emails = {
    'Sue Reyn' : 's.reyn@email.com',
    'Mike Filt': 'mike.filt@bmail.com',
    'Nate Arty': 'narty042@nmail.com'
    }

new_contact = input()

new_email = input()
contact_emails[new_contact] = new_email

for contact in contact_emails:
            print(contact_emails[contact]+ ' is ' + contact)

Вывод:

>>Alf
>>alf1@hmail.com
s.reyn@email.com is Sue Reyn
mike.filt@bmail.com is Mike Filt
narty042@nmail.com is Nate Arty
alf1@hmail.com is Alf
0 голосов
/ 20 февраля 2020

вместо использования

contact_emails[new_contact] = new_email

попробуйте

contact_emails.update({new_contact:new_email})

for key,val in contact_emails.items():
    print(key +' is ' + val)
...