lambda表达式中的奇怪测试语法:x在{" key1"," key2"}

时间:2016-10-27 11:58:01

标签: python-3.x opencv dictionary lambda

我对python很新(几个月),请原谅我的无知......

在编译opencv期间,此行上的SyntaxError编译失败:

has_mat = len(list(filter(lambda x: x[0] in {"Mat", "vector_Mat"}, args))) > 0

                                                  ^

我从未见过这种语法......(不是lambda表达式,{" key1"," key2"}部分中的x)。据我了解这一部分,应该写成:

has_mat = len(list(filter(lambda x: x[0] in ["Mat", "vector_Mat"], args))) > 0

has_mat = len(list(filter(lambda x: x[0] in {"Mat":1, "vector_Mat":1}, args))) > 0

因此,仅仅因为我的个人文化,有人可以解释这是什么意思吗?如果我的python版本不支持这个,我可以使用哪种替代语法?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您在此处看到的内容,{"Mat":1, "vector_Mat":1}是一个Python set。可以通过将iterable传递给set或使用set literal来创建set(),如您的示例所示。 set是一种仅包含唯一值的Python类型:

In [1]: set([1, 1, 2, 3])
Out[1]: {1, 2, 3}

set还支持许多有用的比较操作,您可以阅读here