Pythonic 方法 : Finding First Matching Path With Minimal Runtime

标签 python

在 Python 中以相当低的运行时间找到第一个匹配路径的有效方法是什么?

例如,

我得到一个路径作为输入:

test1/testA/testB

和一组可以匹配的路径(在我的用例中,这将是数千个)。

test1/testB
test1/testA
testC/testD

不会出现如下重叠路径,只能匹配一条路径:

test1/testA
test1/testA/testB

在上面的例子中,由于test1/testA/testBtest1/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/

相关文章:

python - 为什么 reverse() 在列表的特定片段上不起作用?

python - 如何在按某些条件查询后更改 pandas DataFrame 值

python - Boto3 - 在不使用访问 key 的情况下使用 Amazon Cognito 进行身份验证

python - 如何找到旋转角度,使两点的Y轴相同

python - 解析 whatsApp 对话日志

python - python linkedinapi 出现 "NoneType"对象没有属性错误

python - 从绘图 3d 图中抓取相机位置

Python 的过滤函数参数顺序

python - 如何在没有安装 python 的系统上执行带有 python 代码的 C++ 代码

python - 优化半素因式分解算法