我有一个类似
的数组x = [ob1,ob2,...,obn]
每个ob都有两个属性,id和time。
现在,如何根据对象ID的值高效而快速地检索对象的索引?
例如,如果要检索id = 3的对象。如果数组直接存储id值而不存储对象,则index()可以正常工作!
我做了一个for循环来遍历每个对象并检查该对象的ID,一旦找到该对象,就中断该循环。但是,这样做效率不高,因为在某些时候我有超过10,000次循环迭代。任何帮助将不胜感激。
答案 0 :(得分:-1)
您可以在此处使用字典:
ids = {obj.id: obj for obj in x}
这样,您可以迭代一次,并可以使用ids.get(3)
返回想要的实例O(1)
您也可以将其扩展到其他属性:
times, ids = {}, {}
for obj in x:
times[obj.time] = obj
ids[obj.id] = obj
我知道从 space 复杂性的角度来看这不是很好,因为您要多次存储实例,但这可以使您前进