使用值获取python中的对象索引而不循环

时间:2017-12-08 14:45:46

标签: python arrays list

基本上我有这个:

data = [
    {
        "id" : "hello",
        ...
    },
    {
        "id" : "world",
         ...
    }
]

我希望得到结果:

"1" 

如果我输入类似的内容:

get_index(id="world")

主要的是我想要遍历数组,因为其中有很多数据。如果我要循环它会很容易,我最终会得到一些代码:

for obj in data:
    if obj['id'] == 'hello':
        print(obj['id'])

但有没有循环的直接方式呢?

2 个答案:

答案 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?