Python:检查列表中的数据类型

时间:2017-10-24 20:53:09

标签: python search types find

有没有办法检查列表/词典中是否存在特定数据类型的实例,而不显式检查每个元素/键?

我怀疑答案是否定的。但是,如果确实存在,我想它会类似于使用in运算符搜索特定元素/键的方式,如下所示:

3 in [1, 2, 3] # => True

除了您要检查数据类型的实例而不是某个特定值,例如:

int in [1,"a", 3.4] # => True

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

in __contains__实际上是in的语法糖,其中does iterate位于列表内容之上。

如果您想使用list来检查类型;您可以实现自己的数据结构(继承__contains__)并覆盖class MyList(list): def __contains__(self, typ): for val in self: if isinstance(val, typ): return True return False x = MyList([1, 2, 'a', 3]) print float in x # False print str in x # True 以检查类型:

def __contains__(self, typ):
    return any(isinstance(val, typ) for val in self)

print int in MyList([1, "a", 3.4]) # True
print int in MyList(["a", 3.4])    # False

您还可以利用any功能:

 Document query = new Document()
            .append(Review.Field.RESTAURANT_ID, restaurant.getId())
            .append(Review.Field.OWNER_ID, getUserId());

   getDatabase().getCollection(DBCollections.REVIEWS_RATINGS).find(query).continueWith...

至于在没有检查每个元素的情况下这是否可行 - 不,不是。在最糟糕的情况下,您最终会检查每个元素。

答案 1 :(得分:1)

我认为您可以使用 isinstance(元素,类型)

我做了一个功能:

It's an Integer
It's an Integer
It's an Integer

输出:

{{1}}