从列表中访问类变量而不使用for循环?

2024-04-25 11:43:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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

for object in object_list:
    if object.x == 10 and object.y == 10:
        current_object = object
        break

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

有没有更有效的方法让我得到我的请求对象


Tags: and对象方法代码in列表forif
1条回答
网友
1楼 · 发布于 2024-04-25 11:43:16

如果你要一次又一次地查找,那么你可以把你的列表变成字典,就像这样

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

Is there a more efficient way for me to get my requested object?

上面建议的dictionary方法将非常快,因为dictionary查找可以在固定时间内进行(因为它们内部使用哈希表),但是搜索列表将是线性时间复杂度(我们需要迭代列表并逐个检查元素)

相关问题 更多 >

    热门问题