3

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

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

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

4

2 回答 2

5

您可以使用内置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 个元素——如果您需要所有这些元素,请查看jsbueno 的答案

于 2013-01-31T02:39:38.607 回答
0

您必须遍历所有 set 元素 - 您只需执行以下操作即可获得这些名称的 lsit:

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

但是通过这样做,您会失去对元素的快速访问集 - 因为它是使用它存储的 strigns 的哈希来完成的。因此,没有使用纯集合的快速方法来快速检查其元素中的子字符串。

于 2013-01-31T02:41:43.930 回答