Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите решить задачу по программированию через Python пожалуйста

Me1issa Ученик (197), закрыт 1 год назад
Данные об email-адресах учеников хранятся в словаре:

emails = {'mgu.edu': ['andrei_serov', 'alexander_pushkin', 'elena_belova', 'kirill_stepanov'],

'gmail.com': ['alena.semyonova', 'ivan.polekhin', 'marina_abrabova'],

'msu.edu': ['sergei.zharkov', 'julia_lyubimova', 'vitaliy.smirnoff'],

'yandex.ru': ['ekaterina_ivanova', 'glebova_nastya'],

'harvard.edu': ['john.doe', 'mark.zuckerberg', 'helen_hunt'],

'mail.ru': ['roman.kolosov', 'ilya_gromov', 'masha.yashkina']}

Нужно дополнить код таким образом, чтобы он вывел все адреса в алфавитном порядке и в формате имя_пользователя@домен.

При решении использовать генератор словарей.
Лучший ответ
Папа Высший разум (116300) 1 год назад
Довольно просто:
 emails = {
'mgu.edu': ['andrei_serov', 'alexander_pushkin', 'elena_belova', 'kirill_stepanov'],
'gmail.com': ['alena.semyonova', 'ivan.polekhin', 'marina_abrabova'],
'msu.edu': ['sergei.zharkov', 'julia_lyubimova', 'vitaliy.smirnoff'],
'yandex.ru': ['ekaterina_ivanova', 'glebova_nastya'],
'harvard.edu': ['john.doe', 'mark.zuckerberg', 'helen_hunt'],
'mail.ru': ['roman.kolosov', 'ilya_gromov', 'masha.yashkina']
}

addr = map(
lambda k: list(map(lambda name: name + '@' + k, emails[k])),
emails
)

print('\n'.join(sorted(sum(addr, []))))
Даже без functools удалось обойтись. Не думал, что sum может конкатенировать списки :-)
Хотя, свёртка в процессе обработки была бы эффективнее, но зато так записывается короче.

Вывод после запуска:
 alena.semyonova@gmail.com
alexander_pushkin@mgu.edu
andrei_serov@mgu.edu
ekaterina_ivanova@yandex.ru
elena_belova@mgu.edu
glebova_nastya@yandex.ru
helen_hunt@harvard.edu
ilya_gromov@mail.ru
ivan.polekhin@gmail.com
john.doe@harvard.edu
julia_lyubimova@msu.edu
kirill_stepanov@mgu.edu
marina_abrabova@gmail.com
mark.zuckerberg@harvard.edu
masha.yashkina@mail.ru
roman.kolosov@mail.ru
sergei.zharkov@msu.edu
vitaliy.smirnoff@msu.edu
Miras KuzhakulovУченик (155) 1 год назад
Молодец, я тоже изучаю питон, но скрипты и коды писать не умею. За то научился их читать и понимать.
Егор ПрокопенкоУченик (219) 1 год назад
так на иннополисе фанктулс мы не изучали
Егор Прокопенко Ученик (219) еще
Камиль ДудиковУченик (169) 11 месяцев назад
А что делает lambda?
Папа Высший разум (116300) Камиль Дудиков, не что делает, а чем является. lambda - это анонимная функция, определённая непосредственно в месте использования. Можно было написать
 def toemail(name, k): return name + '@' + k 
И в месте использования указать название функции toemail. Но если функция одноразовая, то проще написать лямбду.
Остальные ответы
Похожие вопросы