基本上我有这个:
data = [
{
"id" : "hello",
...
},
{
"id" : "world",
...
}
]
我希望得到结果:
"1"
如果我输入类似的内容:
get_index(id="world")
主要的是我不想要遍历数组,因为其中有很多数据。如果我要循环它会很容易,我最终会得到一些代码:
for obj in data:
if obj['id'] == 'hello':
print(obj['id'])
但有没有循环的直接方式呢?
答案 0 :(得分:1)
只要您不能以某种方式利用数据的特定结构,就不可能比您描述的循环更有效地执行此操作。
答案 1 :(得分:0)
你必须至少经历一次整个阵列。
但是,如果需要在数组中搜索许多不同的键,则可以构建索引:
>>> data = [
... {
... "id" : "hello",
... },
... {
... "id" : "world",
... }
... ]
>>> get_index= {item["id"]:counter for (counter, item) in enumerate(data)}
>>> get_index["hello"]
0
>>> get_index["world"]
1
>>>
由于您现在有一个查找表,因此对ID的查询现在应该是常量时间操作: How expensive are Python dictionaries to handle?