Я хочу передать строку ключа в лямбда-функцию в качестве аргумента для mn
в той же строке. Есть способ сделать это? Я не хочу снова набирать строку ключа.
switch = {
'foo': lambda: bb.Data(ticker=self.ticker, key=self.key, func='yes', mn='foo'),
'bar': lambda: bb.Data(ticker=self.ticker, key=self.key, mn='bar')
}
2 ответа
Вы можете создать словарь так:
switch = {
key: lambda: do_something(key)
for key in ['foo', 'bar']
}
Если вы хотите вызвать другую функцию для другого ключа, вам нужно что-то вроде этого:
def add_dict_item(a_dict, key):
if key == 'foo':
a_dict[key] = lambda: do_something(key)
elif key == 'bar':
a_dict[key] = lambda: do_something_else(key)
switch = {}
add_dict_item(switch, 'foo')
add_dict_item(switch, 'bar')
Вы можете определить функцию-член, так как вы использовали self. И использовать словарь понимания.
def mn_func(self, mn_item):
return bb.Data(ticker=self.ticker, key=self.key, mn=mn_item)
list_of_items = ['foo', 'bar']
switch ={ mn_item:mn_func(mn_item) for mn_item in list_of_items}
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.