2014-10-09 5 views
0

у меня есть словарь self.what_to_build
я итерация на каждом элементе, и применить другой метод для каждого элемента, используя следующий путь:Как сопоставить функцию с каждым элементом словаря?

[self.typeBuild(obj_type,dest) for obj_type,dest in self.what_to_build.items()] 

Это мое понимание этого строит список в памяти, в то время как нет реальное влияние на программу, я хотел бы воздержаться от этого, мне действительно не нужен этот список, просто применяя этот метод. Как бы сделать это же карту, в наиболее вещий образом, не делая список понимание

ответ

7

просто использовать обычный цикл:

for obj_type,dest in self.what_to_build.items(): 
    self.typeBuild(obj_type, dest) 

список понимание действительно создает список объектов с возвращаемых значений вызовы self.typeBuild(), что является пустой тратой процессора и памяти, если вам не нужны эти возвращаемые значения.

Не слишком болтайте, пытаясь написать «компактный» код; читаемость находится на правильном уровне многословия.

+0

Я принимаю это, но из любопытства, поскольку я изучаю язык, и я мог бы видеть это в коде других людей. Есть ли способ сделать это в одной строке, подобно списку compre ' –

+0

@ ItayMoav-Malimovka: Я бы отверг любые такие попытки в обзорах кода, если честно. В одной строке нет * разумного * способа сделать это, и вы не должны пытаться это сделать в любом случае. –

+0

Я согласен с вашим подходом. Но, изучая новый язык, хорошо видеть ВСЕ, что может предложить язык, а не только часть «лучшей практики» ... и спасибо за ответ. –

Смежные вопросы