在 Python 中以相当低的运行时间找到第一个匹配路径的有效方法是什么?
例如,
我得到一个路径作为输入:
test1/testA/testB
和一组可以匹配的路径(在我的用例中,这将是数千个)。
test1/testB
test1/testA
testC/testD
不会出现如下重叠路径,只能匹配一条路径:
test1/testA
test1/testA/testB
在上面的例子中,由于test1/testA/testB
在test1/testA
中,我想返回test1/testA
。
我的方法是构建一个内存树并标记树中的每个节点(如果它是端点)。然后,我每次都会遍历这棵树,看看是否有一条路径可以匹配到。不幸的是,这需要相当多的工作。
是否有 Python 函数或库可以相当轻松地完成此任务?还是我需要从头开始编写?
最佳答案
这并没有直接解决“如何构建算法”的问题(看起来需要从上面的评论中得到更多的说明)但是......
如果这些是真实世界的文件/目录路径,那么您可能需要使用 os.path.commonprefix
function在标准库中。它可以以与操作系统/平台无关的方式匹配常见的路径前缀。
在开始之前,您还应该将所有路径规范化为绝对路径(使用 os.path.abspath
)或相对路径(使用 os.path.relative
)。
关于Pythonic 方法 : Finding First Matching Path With Minimal Runtime,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26165782/