关于python:在对象列表中查找对象的最有效方法

Most efficient way to find objetcs in list of objects

本问题已经有最佳答案,请猛点这里访问。

我有一个列表或数组(Python中的正确术语是什么?)物体的让所有对象匹配一个条件的最有效方法是什么?

我可以遍历列表并检查每个元素,但这似乎不是很有效。

1
2
3
4
objects = []
for object in list:
  if object.value =="123":
    objects.add(object)


这是最简单的方法:

1
objects = [x for x in someList if x.value == 123]

如果您正在寻找一个更快的解决方案,您必须告诉我们关于您的对象以及如何构建源列表的更多信息。例如,如果所讨论的属性在对象中是唯一的,那么使用dict而不是list可以获得更好的性能。另一种选择是保持列表的排序,使用bisect而不是线性搜索。但是请注意,当列表变得非常大时,这些优化工作就开始有意义了,如果您的元素少于~500个,只需理解并停止担心即可。


您可以使用filter

1
objects = filter(lambda i: i.value == '123', l)

自我笔记显然,"过滤与列表竞争"的辩论开始了火焰大战。