1
6
最简单的方法 第一 满足条件的索引(在python 2.6或更高版本中:
这给了
如果您需要在更改到
你不能用
你可以建造
但由于大量的
然而,这些只是定性的考虑——考虑在几个“典型/代表性”的值示例上运行基准测试。
|
2
3
如果您有1百万条记录,则可能需要切换到数据库或其他数据结构。对于给定的数据结构,这将是一个线性时间操作。如果您计划经常进行这个查询,您可以创建一个ID来记录dict。 |
3
3
最好的方法可能是设置一个从id到name的reverse dict()。 |
4
0
两个或多个听写可以共享同一个ID吗?如果是这样,我想您需要返回一个索引列表。 如果你想一次性搜索,那么你可以通过列表理解来完成:
但是,如果您想做很多,并且列表变化不大,那么最好创建一个反向索引:
注意:以上代码假定每个ID都是唯一的。如果有重复项,请将dict替换为collections.defaultdict(list)。 上面的代码将索引返回到原始列表中,因为这是您要求的。但是,最好返回实际的dict而不是索引,除非您想使用索引将其从列表中删除。 |
5
0
如果建立索引的频率较低: 在主列表中创建索引值的查找数组,例如
如果frwquency很高,请考虑排序方法(我认为这就是Schwartzian转换答案的含义)。当源列表发生更改时,如果在重建树的性能方面遇到的问题比从生成的索引中获取数据的性能更大,那么这可能是好事;因为将数据插入现有列表(至关重要的是,该列表知道以前最佳匹配字符串时ID的其他可能匹配项)。停止与ID关联)将比在每个增量上从头开始构建列表更快。 编辑 这假设您的ID是密集填充的整数。 为了提高访问排序列表的性能,可以将其划分为400-600个条目块,以避免重复地向前或向后移动整个列表的一个或几个位置,并使用二进制算法进行搜索。 |
6
0
数据结构似乎不适合它的使用。更改列表是昂贵的-更改本身(如果您进行了任何插入/删除操作)以及由此产生的重新生成dict的需要,或者每次都进行线性扫描。 问题是: 怎样 你的名单有变化吗? 也许您可以使用对象,使用对象本身的指针,而不是担心索引,而不是使用索引(经常更改)? |
July · 如何定义数字间隔,然后四舍五入 1 年前 |
user026 · 如何根据特定窗口的平均值(行数)创建新列? 1 年前 |
Ashok Shrestha · 需要追踪特定的颜色线并获取坐标 1 年前 |
Nicote Ool · 在FastApi和Vue3中获得422 1 年前 |
Abdulaziz · 如何对集合内的列表进行排序[重复] 1 年前 |
asmgx · 为什么合并数据帧不能按照python中的预期方式工作 1 年前 |