在不使用for循环的情况下从列表中访问类变量?

时间:2015-06-23 23:08:25

标签: python list class python-3.x

我有一个包含两个值x和y的类对象列表。这是我从列表中获取单个对象的当前代码:

{{1}}

然后我可以通过引用current_object对该对象进行操作。但是,我的问题是该列表包含2000个类对象条目,我担心在找到所需对象之前迭代列表是非常低效的。

我是否有更有效的方法来获取我要求的物品?

1 个答案:

答案 0 :(得分:3)

如果要一次又一次地进行查找,那么您可以将列表转换为字典,就像这样

lookup = {(obj.x, obj.y): object for obj in object_list}

这将创建一个字典,其中键是来自对象的xy值的元组。

现在,您可以像这样进行查找

lookup[(x_value, y_value)]

或者如果您想在字典中找不到密钥时返回默认值,那么您可以使用dictionary.get,就像这样

lookup.get((x_value, y_value), None)

如果在字典中找不到密钥,则不会抛出KeyError,而是返回None

  

我是否有更有效的方法来获取我要求的物品?

上面建议的字典方法会非常快,因为字典查找可以在恒定时间内发生(因为它们在内部使用哈希表),但搜索列表将是线性时间复杂度(我们需要迭代列表并检查元素一个接一个)。