Давайте немного разберемся с этим, чтобы было понятно, что происходит:
summary_col(
[reg0,reg1,reg2,reg3],
stars=True,
float_format='%0.2f',
info_dict={
'N':lambda x: "{0:d}".format(int(x.nobs)),
'R2':lambda x: "{:.2f}".format(x.rsquared)
}
)
Объект summary_col
принимает некоторый ввод, первый аргумент - список объектов регрессии, [reg0,reg1,reg2,reg3]
.Тогда есть три именованных аргумента, stars
, float_format
и info_dict
.Когда мы передаем список объектов регрессии в качестве первого аргумента, я считаю, что лямбда-функция знает, как применять анонимную функцию к каждому объекту.Поэтому все, что делает info_dict
, - это создание словаря с двумя ключами N
и R2
, которые сопоставляются со строками.Когда на элементы x.nobs
и x.rsquared
ссылаются в лямбда-функциях, они применяются к объектам регрессии из-за контекста, в котором они используются.
Если вы попытаетесь использовать лямбду в этой строке кода на чем-то, чего нет в объектах регрессии, вы почти наверняка получите ошибку.Ключ находится в контексте, к которому применяется лямбда.
Хорошим примером в контексте лямбда-функций является перебор словаря и сортировка по ключу и значению.
# sort the dict by value first, and key second...
# x is inferred from the context (my_dict.items())
for key, value in sorted(my_dict.items(), key=lambda x: (x[1], x[0]):
print(key, value)