什么是LINQ OfType <t>()的Python等价物(在.NET中)

时间:2016-02-10 18:37:44

标签: python linq casting equivalent

我正在尝试在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)

2 个答案:

答案 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
相关问题