如何解决python数据结构来查找跨越给定时间点的窗口
我正在尝试优化我的一段代码,但是我不知道哪种代码是最好的数据结构,或者是否有某些东西可以满足我的要求。
我有一个具有已定义的开始和结束时间点(均为浮动)的实体列表。
我正在尝试建立一个索引,该索引可以让我查找跨越给定时间点的哪些窗口(开始和停止)。
目前,我只是简单地迭代字典,并检查每个实体是否为start < t < stop
。
这是一个小例子:
entities = {
'a': (0,32.31),'b': (2,22.00312),'c': (10,34.1),'d': (22,40.2)
}
预期的输出将是这样的:
t = 12
index = build_index(entities)
candidates = find_candidates(t,index)
print(candidates)
['a','b','c']
t = 33
index = build_index(entities)
candidates = find_candidates(t,index)
print(candidates)
['c','d']
实体列表可以增长到数十万个。 在标准笔记本电脑(假设8 GB RAM)上尽快找到这些窗口的最佳数据结构/编程方法是什么?
我对解决方案的想法很满意,我并不一定要寻找可以满足我需要的完整工作代码!
解决方法
借助@ Adam.Er8的帮助,我能够找到解决方案。
使用intervaltree模块可以轻松解决该问题。
from intervaltree import IntervalTree
entities = {
'a': (0,32.31),'b': (2,22.00312),'c': (10,34.1),'d': (22,40.2)
}
for key,r in entities.items():
t[r[0]:r[1]] = key
results = t.at(12)
print([x.data for x in results])
['a','b','c']
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。