根据python中的属性值在对象数组中查找特定值的索引?

时间:2019-01-04 16:07:11

标签: python arrays arraylist indexof

我有一个类似

的数组
x = [ob1,ob2,...,obn]

每个ob都有两个属性,id和time。

现在,如何根据对象ID的值高效而快速地检索对象的索引?

例如,如果要检索id = 3的对象。如果数组直接存储id值而不存储对象,则index()可以正常工作!

我做了一个for循环来遍历每个对象并检查该对象的ID,一旦找到该对象,就中断该循环。但是,这样做效率不高,因为在某些时候我有超过10,000次循环迭代。任何帮助将不胜感激。

1 个答案:

答案 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 复杂性的角度来看这不是很好,因为您要多次存储实例,但这可以使您前进