2024-04-25 11:43:16 发布
网友
我有一个类对象列表,它们有两个值,x和y。这是我当前从列表中获取单个对象的代码:
for object in object_list: if object.x == 10 and object.y == 10: current_object = object break
然后我可以通过引用当前的对象对对象进行操作。但是,我的问题是,这个列表包含2000个类对象条目,我担心这样迭代列表直到找到所需的对象时效率会非常低
有没有更有效的方法让我得到我的请求对象
如果你要一次又一次地查找,那么你可以把你的列表变成字典,就像这样
lookup = {(obj.x, obj.y): object for obj in object_list}
这将创建一个字典,其中键是来自对象的x和y值的元组
x
y
现在,您可以像这样简单地进行查找
lookup[(x_value, y_value)]
或者,如果在字典中找不到键,则希望返回默认值,那么可以使用dictionary.get,如下所示
dictionary.get
lookup.get((x_value, y_value), None)
如果在字典中找不到键,则不会抛出KeyError,而是返回None
KeyError
None
Is there a more efficient way for me to get my requested object?
上面建议的dictionary方法将非常快,因为dictionary查找可以在固定时间内进行(因为它们内部使用哈希表),但是搜索列表将是线性时间复杂度(我们需要迭代列表并逐个检查元素)
如果你要一次又一次地查找,那么你可以把你的列表变成字典,就像这样
这将创建一个字典,其中键是来自对象的
x
和y
值的元组现在,您可以像这样简单地进行查找
或者,如果在字典中找不到键,则希望返回默认值,那么可以使用
dictionary.get
,如下所示如果在字典中找不到键,则不会抛出
KeyError
,而是返回None
上面建议的dictionary方法将非常快,因为dictionary查找可以在固定时间内进行(因为它们内部使用哈希表),但是搜索列表将是线性时间复杂度(我们需要迭代列表并逐个检查元素)
相关问题 更多 >
编程相关推荐