Python与LINQ of type的等价物是什么<;T>;()(在.NET中)

Python与LINQ of type的等价物是什么<;T>;()(在.NET中),python,linq,casting,equivalent,Python,Linq,Casting,Equivalent,我试图在logger.handlers集合中获取特定自定义类型的单个处理程序 对于.NET,我只需使用以下LINQ扩展,它过滤元素并仅返回类型为MemoryListHandler的元素: logger.handlers.OfType<MemoryListHandler>().SingleOrDefault() Python是动态类型的,因此您可能不需要转换任何内容 但是,在某些情况下,您可能仍然需要将int转换为string: map(lambda x: str(x), [1,

我试图在
logger.handlers
集合中获取特定自定义类型的单个
处理程序

对于.NET,我只需使用以下LINQ扩展,它过滤元素并仅返回类型为
MemoryListHandler
的元素:

logger.handlers.OfType<MemoryListHandler>().SingleOrDefault()

Python是动态类型的,因此您可能不需要转换任何内容

但是,在某些情况下,您可能仍然需要将int转换为string:

  map(lambda x: str(x), [1, 2, 3])
或者,如果函数只接受一个参数,只需单独传递函数:

  map(str, [1, 2, 3])
更新

 filter(lambda x: type(x) == YourClass, [your_array])

您可以尝试
index
方法

try:
    lh = logger.handlers
    x = lh[lh.index(MemoryListHandler)]
except ValueError:
    x = some_default_value

您不需要
lambda
;只需将
str
作为
map
的第一个参数,如下:
map(str[1,2,3])
。我的问题似乎不够清楚,我已经重新制定了一点。@Erwin Mayer,对变量使用operaor'type'或方法“\uuuuuuuuuu.class\uuuuuu”。。。您可以将其隐藏在函数或其他东西中,但没有比这更好的了。“is”用于对象标识测试,所以我认为isinstance(handler,MemoryListHandler)是合适的测试。
try:
    lh = logger.handlers
    x = lh[lh.index(MemoryListHandler)]
except ValueError:
    x = some_default_value