+2
Under review

Урок 5. Частные случаи идиомы reduce - all, any

Vasiliy Bykov 12 years ago updated by bulat 12 years ago 1

Первое самостоятельное задание: 

Найди сумму максимальных зарплат всех программистов. (вполне себе решается при помощи sum, map и max).

Правильно ли я понимаю суть задания: Необходимо из списка ljudi отобрать программистов, потом у этих программистов проанализировать зарплаты по разным должностям и выбрать максимальные, а затем просуммировать эти зарплаты по всем программистам.


Я решил двумя способами (один с применением filter, другой без):

Решение 1:

sum(map(lambda p: max(p['dolzhnosti'], key = lambda d: d['zarplata'])['zarplata'], filter(lambda p: any(map(lambda d: d['nazvanie'] == 'programmist' , p['dolzhnosti'])), ljudi)))


Решение 2:

sum(map(lambda p: (any(map(lambda d: d['nazvanie'] == 'programmist' ,p['dolzhnosti'])) * max(p['dolzhnosti'], key = lambda d: d['zarplata'])['zarplata']), ljudi))


Результат одинаковый: 300 000.

Но система дальше не идет. В чем моя ошибка?

Answer

Answer
Under review

Как вы и написали в комментариях - подразумевалось, что надо найти сумму у всех людей из списка, а не только программистов.


Спасибо, за баг-репорт. Поправим текст задания!

Searching answer

Еще перепроверю в самом уроке. Но, возможно, там нужно было брать всех сотрудников отдела программистов (если такой есть).

Searching answer

Еще перепроверю в самом уроке. Но, возможно, там нужно было брать всех сотрудников отдела программистов (если такой есть).


А вашему пониманию задачи решение соответствует, косяков нет.

Понятие "отдела" в задании нет. Поэтому если понимать формулировку задания буквально, то нужно решать как было решено у меня. Но программа пропускает дальше, если брать всех людей, а не только программистов. Поэтому думаю, что корректнее будет изменить формулировку задания: Найти максимальную сумму зарплат всех людей из списка ljudi.

Answer
Under review

Как вы и написали в комментариях - подразумевалось, что надо найти сумму у всех людей из списка, а не только программистов.


Спасибо, за баг-репорт. Поправим текст задания!