如何对短列表进行大量搜索?

问题描述 投票:0回答:1

我必须多次搜索一个小列表(从 0 到 10 项不等),并且想知道使用 Python(特别是 IronPython 2.7)来做到这一点的最佳方法是什么

搜索运行的次数将始终比列表中要搜索的项目数多很多倍。例如,如果要搜索的列表中有 5 个项目,我可能需要搜索该列表 50 次或更多次。搜索运行不会按顺序进行。换句话说,我有一个函数可以对一个对象执行一系列操作,其中搜索是其中的一部分。使用不同的对象重复调用该函数。

任何给定搜索的匹配项数量可能为零,但很可能超过 1。我需要所有比赛。调用搜索的函数不使用结果;相反,它是处理其他类型对象的不同函数,将使用结果。

我有这个数据结构:

  MyDataClass:
    ListToSearch ( (AcadEntID, Pt1, Pt2) (AcadEntID Pt1, Pt2) ...)
    Results { AcadEntID : ( (RevitLineID,  EndPtInx) (RevitLineID,  EndPtInx) ...),
                            (RevitLineID,  EndPtInx) (RevitLineID,  EndPtInx) ...))
              AcadEntID : ( (RevitLineID,  EndPtInx) (RevitLineID,  EndPtInx) ...),
                            (RevitLineID,  EndPtInx) (RevitLineID,  EndPtInx) ...))

            }

每个的输入将是 RevitLineID(可以从中获取端点:PtA 和 PtB)

测试询问:对于每个 AcadEntID,PtA 是否位于以 Pt1 为中心的框中?或者它位于以 Pt2 为中心的盒子内?对 PtB 重复上述步骤。每个点都有一个 X 和 Y 值。

如果效率更高,ListToSearch 可以分为多个部分,只要每个点保持与 AcadEntID 关联即可。

该程序正在 RevitPythonShell 中开发,但最终将成为 PyRevit 插件的一部分。

就是这样。我需要一种非常快速的方法来多次搜索短列表。

真诚的; 米歇尔

python search autocad revitpythonshell
1个回答
0
投票

为了快速高效的搜索,Python 字典 是首选集合。您需要实现字典,以便其搜索键对应于您要搜索的内容。该列表源自哪里?如果您自己创建它,只需从一开始就创建一个字典即可。否则,您可以轻松地将列表转换为字典

© www.soinside.com 2019 - 2024. All rights reserved.