【发布时间】:2017-12-08 14:45:46
【问题描述】:
所以基本上我有这个:
data = [
{
"id" : "hello",
...
},
{
"id" : "world",
...
}
]
我想得到结果:
"1"
如果我输入如下内容:
get_index(id="world")
主要是我不想遍历数组,因为其中有很多数据。如果我要循环它会很容易,我最终会得到一些代码,例如:
for obj in data:
if obj['id'] == 'hello':
print(obj['id'])
但是有没有一种不循环的直接方法呢?
【问题讨论】:
-
如果按字母顺序排序的 ID 不仅仅是示例的巧合,您可以使用二等分搜索。但总的来说:不,这将是一个 O(n) 操作,除非您可以利用有关数据结构的一些额外信息。
-
好的,谢谢。您能否在答案中这么说,以便我可以将其称为已接受?
-
嗯,在这个特殊的用例中,你很容易说我不想循环,因为有很多数据。但是你真的知道确切的您要查找的信息的位置?可能不是。如果可能,您可以使用适当的数据结构(如集合)来优化搜索。但是您要求在不实际搜索的情况下搜索项目的解决方案。这是不可能的。
-
主要问题是我无法控制这些数据。我是由别人提供的。否则,我只想提供一个简单的解决方案......