我有一个包含两个值x和y的类对象列表。这是我从列表中获取单个对象的当前代码:
{{1}}
然后我可以通过引用current_object对该对象进行操作。但是,我的问题是该列表包含2000个类对象条目,我担心在找到所需对象之前迭代列表是非常低效的。
我是否有更有效的方法来获取我要求的物品?
答案 0 :(得分:3)
如果要一次又一次地进行查找,那么您可以将列表转换为字典,就像这样
lookup = {(obj.x, obj.y): object for obj in object_list}
这将创建一个字典,其中键是来自对象的x
和y
值的元组。
现在,您可以像这样进行查找
lookup[(x_value, y_value)]
或者如果您想在字典中找不到密钥时返回默认值,那么您可以使用dictionary.get
,就像这样
lookup.get((x_value, y_value), None)
如果在字典中找不到密钥,则不会抛出KeyError
,而是返回None
。
我是否有更有效的方法来获取我要求的物品?
上面建议的字典方法会非常快,因为字典查找可以在恒定时间内发生(因为它们在内部使用哈希表),但搜索列表将是线性时间复杂度(我们需要迭代列表并检查元素一个接一个)。