我正在尝试在Handler
集合中获取特定自定义类型MemoryListHandler
的单个logger.handlers
。
使用.NET我只需使用以下LINQ扩展,它会过滤元素并仅返回MemoryListHandler
类型的那些:
logger.handlers.OfType<MemoryListHandler>().SingleOrDefault()
Python中最优雅的等价物是什么?
我当前(不是很整洁)的尝试是:
next((handler for handler in logger.handlers if handler is MemoryListHandler), None)
答案 0 :(得分:1)
Python是动态类型的,因此您可能不需要转换任何内容。
但是,在某些情况下,您仍然可能需要将int转换为string:
map(lambda x: str(x), [1, 2, 3])
或者,假设您的函数只接受一个参数,只需单独传递函数:
map(str, [1, 2, 3])
更新
filter(lambda x: type(x) == YourClass, [your_array])
答案 1 :(得分:1)
您可以尝试index
方法。
try:
lh = logger.handlers
x = lh[lh.index(MemoryListHandler)]
except ValueError:
x = some_default_value