检查集合中的任何成员是否以Python中的给定前缀字符串开头

时间:2013-01-31 02:38:48

标签: python set

在Python中,我有一个set个文件名和一个给定的目录名(在一个循环中)。

集合中的文件名和给定的目录名都在同一名称空间中,例如我只想查看集合中是否有任何以给定字符串 /前缀开头的成员字符串。

用什么方法查看集合中的任何文件名是否以给定的目录前缀开头?

2 个答案:

答案 0 :(得分:2)

您可以使用内置any功能:

any(x.startswith(prefix) for x in your_set)

这会为您提供简单的TrueFalse - 具体取决于是否有任何条件符合条件。如果您想知道哪个元素符合您的条件,那么您需要next

next((x for x in your_set if x.startswith(prefix)),None)

当然,这只会返回符合条件的1个元素 - 如果您需要所有这些元素,请参阅answer by jsbueno

答案 1 :(得分:0)

你必须循环遍历所有设置元素 - 只需执行以下操作即可获得这些名称:

results = [element for element in your_set if element.startswith(your_prefix)]  

但是通过这样做你松开了快速访问集必须元素 - 因为它是由它存储的条纹哈希完成的。因此,没有快速的方法,使用纯集,快速检查其元素中的子串。