В статье я хотел бы поделиться своим опытом решения ошибки ″NameError⁚ name ‘reducer’ is not defined″ в коде, который использует функции map и reduce из модуля functools.Первым шагом, чтобы исправить данную ошибку, я обратил внимание на то, что она указывает на то, что функция reducer не определена в моем коде. Я сразу заметил, что у меня импортирован модуль functools, но функция reducer не определена в нем.
После этого я вспомнил, что модуль functools содержит функцию reduce, но не содержит функцию reducer. Моя ошибка заключалась в том, что я ошибочно попытался использовать несуществующую функцию.Чтобы исправить ошибку, я изменил имя функции reducer на reduce, чтобы соответствовать функции, определенной в модуле functools. Таким образом, мой код выглядел следующим образом⁚
from functools import reduce
def mapper(row)⁚
make, msrp row
return make, float(msrp)
def reduce(acc, item)⁚
make, msrp item
acc[make].append(msrp)
return acc
from collections import defaultdict
mapped_data list(map(mapper, file_data))
reduced_data reduce(reducer, mapped_data, defaultdict(list))
После внесения этих изменений ошибка ″NameError⁚ name ‘reducer’ is not defined″ больше не появлялась, и код успешно выполнился.